Exemplo n.º 1
0
        /// <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());
            }
		}
Exemplo n.º 2
0
 /// <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()));
     }
 }