/// <summary> /// Get available users. /// </summary> public GXUsersResponse Post(GXUsersRequest request) { lock (Db) { IAuthSession s = this.GetSession(false); List<GXAmiUser> users; //Return info from logged user; if (request.UserID == -1) { int id = Convert.ToInt32(s.Id); if (id == 0) { throw new ArgumentException("Failed to get information from current user. Invalid session ID."); } users = GetUsers(s, Db, id, 0, false, true, null, SearchOperator.None, SearchType.All); } else if (request.UserID != 0) { users = GetUsers(s, Db, request.UserID, 0, request.Removed, true, null, SearchOperator.None, SearchType.All); } //Returns users who can access device. else if (request.DeviceID != 0) { throw new NotImplementedException(); } //Returns users who belong to user group. else if (request.UserGroupID != 0) { bool superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s); if (!superAdmin && !GXUserGroupService.CanAccess(Db, Convert.ToInt32(s.Id), request.UserGroupID)) { throw new ArgumentException("Access denied."); } users = GetUsers(s, Db, 0, request.UserGroupID, request.Removed, true, null, SearchOperator.None, SearchType.All); } else { //Return users who user can see. users = GetUsers(s, Db, 0, 0, request.Removed, true, null, SearchOperator.None, SearchType.All); } //Remove excluded users. if (request.Excluded != null && request.Excluded.Length != 0) { List<long> ids = new List<long>(request.Excluded); var excludeUsers = from c in users where !ids.Contains(c.Id) select c; users = excludeUsers.ToList(); } //Get users by range. if (request.Index != 0 || request.Count != 0) { if (request.Count == 0 || request.Index + request.Count > users.Count) { request.Count = users.Count - request.Index; } users.RemoveRange(0, request.Index); var limitUsers = users.Take(request.Count); users = limitUsers.ToList(); } //Password is not give to the caller. This is a security reason. foreach (GXAmiUser it in users) { it.Password = null; } return new GXUsersResponse(users.ToArray()); } }
/// <summary> /// Get available users. /// </summary> public GXUsersResponse Post(GXUsersRequest request) { lock (Db) { IAuthSession s = this.GetSession(false); List <GXAmiUser> users; //Return info from logged user; if (request.UserID == -1) { int id = Convert.ToInt32(s.Id); if (id == 0) { throw new ArgumentException("Failed to get information from current user. Invalid session ID."); } users = GetUsers(s, Db, id, 0, false, true, null, SearchOperator.None, SearchType.All); } else if (request.UserID != 0) { users = GetUsers(s, Db, request.UserID, 0, request.Removed, true, null, SearchOperator.None, SearchType.All); } //Returns users who can access device. else if (request.DeviceID != 0) { throw new NotImplementedException(); } //Returns users who belong to user group. else if (request.UserGroupID != 0) { bool superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s); if (!superAdmin && !GXUserGroupService.CanAccess(Db, Convert.ToInt32(s.Id), request.UserGroupID)) { throw new ArgumentException("Access denied."); } users = GetUsers(s, Db, 0, request.UserGroupID, request.Removed, true, null, SearchOperator.None, SearchType.All); } else { //Return users who user can see. users = GetUsers(s, Db, 0, 0, request.Removed, true, null, SearchOperator.None, SearchType.All); } //Remove excluded users. if (request.Excluded != null && request.Excluded.Length != 0) { List <long> ids = new List <long>(request.Excluded); var excludeUsers = from c in users where !ids.Contains(c.Id) select c; users = excludeUsers.ToList(); } //Get users by range. if (request.Index != 0 || request.Count != 0) { if (request.Count == 0 || request.Index + request.Count > users.Count) { request.Count = users.Count - request.Index; } users.RemoveRange(0, request.Index); var limitUsers = users.Take(request.Count); users = limitUsers.ToList(); } //Password is not give to the caller. This is a security reason. foreach (GXAmiUser it in users) { it.Password = null; } return(new GXUsersResponse(users.ToArray())); } }