diff --git a/zero.Core/Api/UserApi.cs b/zero.Core/Api/UserApi.cs
index a582c251..2ab01024 100644
--- a/zero.Core/Api/UserApi.cs
+++ b/zero.Core/Api/UserApi.cs
@@ -36,12 +36,19 @@ namespace zero.Core.Api
///
- public async Task> GetAll(string appId = null)
+ public async Task> GetByIds(params string[] ids)
+ {
+ return await GetByIds(ids);
+ }
+
+
+ ///
+ public async Task> GetAll()
{
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
{
return await session.Query()
- .Scope(appId)
+ .Scope(Scope)
.OrderByDescending(x => x.CreatedDate)
.ToListAsync();
}
@@ -49,14 +56,14 @@ namespace zero.Core.Api
///
- public async Task> GetByQuery(ListQuery query, string appId = null)
+ public async Task> GetByQuery(ListQuery query)
{
query.SearchSelector = user => user.Name;
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
{
return await session.Query()
- .Scope(appId)
+ .Scope(Scope)
.ToQueriedListAsync(query);
}
}
@@ -160,17 +167,22 @@ namespace zero.Core.Api
///
/// Find user by email
///
- Task GetUserByEmail(string email);
+ Task GetUserByEmail(string email);
+
+ ///
+ /// Get users by ids
+ ///
+ Task> GetByIds(params string[] ids);
///
/// Get all users for the selected application
///
- Task> GetAll(string appId = null);
+ Task> GetAll();
///
/// Get all available users (with query)
///
- Task> GetByQuery(ListQuery query, string appId = null);
+ Task> GetByQuery(ListQuery query);
///
/// Creates or updates a user
diff --git a/zero.Web.UI/App/components/pickers/userPicker/userpicker.vue b/zero.Web.UI/App/components/pickers/userPicker/userpicker.vue
new file mode 100644
index 00000000..2cb11f54
--- /dev/null
+++ b/zero.Web.UI/App/components/pickers/userPicker/userpicker.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zero.Web.UI/App/resources/users.js b/zero.Web.UI/App/resources/users.js
index 0688a73e..1d676345 100644
--- a/zero.Web.UI/App/resources/users.js
+++ b/zero.Web.UI/App/resources/users.js
@@ -1,47 +1,52 @@
import Axios from 'axios';
import AuthApi from 'zero/services/auth';
+const base = 'users/';
+
export default {
- // get user by id
getById(id)
{
- return Axios.get('users/getById', { params: { id } }).then(res => Promise.resolve(res.data));
+ return Axios.get(base + 'getById', { params: { id } }).then(res => Promise.resolve(res.data));
},
- // get all users
getAll(query)
{
- return Axios.get('users/getAll', { params: query }).then(res => Promise.resolve(res.data));
+ return Axios.get(base + 'getAll', { params: query }).then(res => Promise.resolve(res.data));
+ },
+
+ getPreviews(ids)
+ {
+ return Axios.get(base + 'getPreviews', { params: { ids } }).then(res => Promise.resolve(res.data));
+ },
+
+ getForPicker()
+ {
+ return Axios.get(base + 'getForPicker').then(res => Promise.resolve(res.data));
},
- // save a user
save(model)
{
- return Axios.post('users/save', model).then(res => Promise.resolve(res.data));
+ return Axios.post(base + 'save', model).then(res => Promise.resolve(res.data));
},
- // deletes a user
delete(id)
{
- return Axios.delete('users/delete', { params: { id } }).then(res => Promise.resolve(res.data));
+ return Axios.delete(base + 'delete', { params: { id } }).then(res => Promise.resolve(res.data));
},
- // change password
updatePassword(model)
{
- return Axios.post('users/updatePassword', model).then(res => Promise.resolve(res.data));
+ return Axios.post(base + 'updatePassword', model).then(res => Promise.resolve(res.data));
},
- // disable user
disable(model)
{
- return Axios.post('users/disable', model).then(res => Promise.resolve(res.data));
+ return Axios.post(base + 'disable', model).then(res => Promise.resolve(res.data));
},
- // enable user
enable(model)
{
- return Axios.post('users/enable', model).then(res => Promise.resolve(res.data));
+ return Axios.post(base + 'enable', model).then(res => Promise.resolve(res.data));
}
};
\ No newline at end of file
diff --git a/zero.Web/Controllers/UsersController.cs b/zero.Web/Controllers/UsersController.cs
index aa89218a..47ea0470 100644
--- a/zero.Web/Controllers/UsersController.cs
+++ b/zero.Web/Controllers/UsersController.cs
@@ -1,4 +1,6 @@
using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using zero.Core.Api;
using zero.Core.Entities;
@@ -32,6 +34,25 @@ namespace zero.Web.Controllers
public IActionResult GetAllPermissions() => Json(PermissionsApi.GetAll());
+ public async Task GetForPicker() => Json((await Api.GetAll()).Select(x => new SelectModel()
+ {
+ Id = x.Id,
+ Name = x.Name,
+ IsActive = x.IsActive
+ }));
+
+
+ public async Task GetPreviews(List ids)
+ {
+ return JsonPreviews(await Api.GetByIds(ids.ToArray()), item => new PreviewModel()
+ {
+ Id = item.Id,
+ Icon = item.AvatarId,
+ Name = item.Name
+ });
+ }
+
+
[ZeroAuthorize]
public async Task UpdatePassword([FromBody] UserPasswordEditModel model)
{