コード例 #1
0
 public GXActionDeleteResponse Post(GXActionDeleteRequest request)
 {
     IAuthSession s = this.GetSession(false);
     int id = Convert.ToInt32(s.Id);
     List<GXEventsItem> events = new List<GXEventsItem>();
     lock (Db)
     {
         if (id == 0)
         {
             throw new ArgumentException("Remove failed. Invalid session ID.");
         }
         if (!GuruxAMI.Server.GXBasicAuthProvider.CanUserEdit(s))
         {
             throw new ArgumentException("Remove not allowed.");
         }
         List<GXAmiUserActionLog> logs = new List<GXAmiUserActionLog>();
         bool superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);
         //Remove user group logs.
         if (request.UserGroupIDs != null)
         {
             foreach (long it in request.UserGroupIDs)
             {
                 if (it == 0)
                 {
                     throw new ArgumentException("ID is required");
                 }
                 if (!superAdmin && !GXUserGroupService.CanAccess(Db, id, it))
                 {
                     throw new ArgumentException("Access denied.");
                 }
                 logs.AddRange(Db.Select<GXAmiUserActionLog>(p => p.UserID == it));
             }
         }
         //Remove user logs.
         if (request.UserIDs != null)
         {
             foreach (long it in request.UserIDs)
             {
                 if (it == 0)
                 {
                     throw new ArgumentException("ID is required");
                 }
                 if (!superAdmin || id != it)
                 {
                     throw new ArgumentException("Access denied.");
                 }
                 logs.AddRange(Db.Select<GXAmiUserActionLog>(p => p.UserID == it));
             }
         }
         //Remove Device logs.
         if (request.DeviceIDs != null)
         {
             foreach (ulong it in request.DeviceIDs)
             {
                 if (it == 0)
                 {
                     throw new ArgumentException("ID is required");
                 }
                 logs.AddRange(Db.Select<GXAmiUserActionLog>(p => p.TargetID == it));
             }
         }
         //Remove Device group logs.
         if (request.DeviceGroupIDs != null)
         {
             foreach (ulong it in request.DeviceGroupIDs)
             {
                 if (it == 0)
                 {
                     throw new ArgumentException("ID is required");
                 }
                 logs.AddRange(Db.Select<GXAmiUserActionLog>(p => p.TargetID == it));
             }
         }
         if (logs.Count == 0)
         {
             //Remove all log items.
             if (superAdmin)
             {
                 logs.AddRange(Db.Select<GXAmiUserActionLog>());
             }
             else //Remove all log items made by user.
             {
                 logs.AddRange(Db.Select<GXAmiUserActionLog>(p => p.UserID == id));
             }
         }
         foreach (GXAmiUserActionLog it in logs)
         {
             events.Add(new GXEventsItem(ActionTargets.DeviceError, Actions.Remove, it));
         }
         Db.DeleteByIds<GXAmiUserActionLog>(logs);
     }
     AppHost host = this.ResolveService<AppHost>();
     host.SetEvents(Db, this.Request, id, events);
     return new GXActionDeleteResponse();
 }
コード例 #2
0
        public GXActionDeleteResponse Post(GXActionDeleteRequest request)
        {
            IAuthSession        s      = this.GetSession(false);
            int                 id     = Convert.ToInt32(s.Id);
            List <GXEventsItem> events = new List <GXEventsItem>();

            lock (Db)
            {
                if (id == 0)
                {
                    throw new ArgumentException("Remove failed. Invalid session ID.");
                }
                if (!GuruxAMI.Server.GXBasicAuthProvider.CanUserEdit(s))
                {
                    throw new ArgumentException("Remove not allowed.");
                }
                List <GXAmiUserActionLog> logs = new List <GXAmiUserActionLog>();
                bool superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);
                //Remove user group logs.
                if (request.UserGroupIDs != null)
                {
                    foreach (long it in request.UserGroupIDs)
                    {
                        if (it == 0)
                        {
                            throw new ArgumentException("ID is required");
                        }
                        if (!superAdmin && !GXUserGroupService.CanAccess(Db, id, it))
                        {
                            throw new ArgumentException("Access denied.");
                        }
                        logs.AddRange(Db.Select <GXAmiUserActionLog>(p => p.UserID == it));
                    }
                }
                //Remove user logs.
                if (request.UserIDs != null)
                {
                    foreach (long it in request.UserIDs)
                    {
                        if (it == 0)
                        {
                            throw new ArgumentException("ID is required");
                        }
                        if (!superAdmin || id != it)
                        {
                            throw new ArgumentException("Access denied.");
                        }
                        logs.AddRange(Db.Select <GXAmiUserActionLog>(p => p.UserID == it));
                    }
                }
                //Remove Device logs.
                if (request.DeviceIDs != null)
                {
                    foreach (ulong it in request.DeviceIDs)
                    {
                        if (it == 0)
                        {
                            throw new ArgumentException("ID is required");
                        }
                        logs.AddRange(Db.Select <GXAmiUserActionLog>(p => p.TargetID == it));
                    }
                }
                //Remove Device group logs.
                if (request.DeviceGroupIDs != null)
                {
                    foreach (ulong it in request.DeviceGroupIDs)
                    {
                        if (it == 0)
                        {
                            throw new ArgumentException("ID is required");
                        }
                        logs.AddRange(Db.Select <GXAmiUserActionLog>(p => p.TargetID == it));
                    }
                }
                if (logs.Count == 0)
                {
                    //Remove all log items.
                    if (superAdmin)
                    {
                        logs.AddRange(Db.Select <GXAmiUserActionLog>());
                    }
                    else //Remove all log items made by user.
                    {
                        logs.AddRange(Db.Select <GXAmiUserActionLog>(p => p.UserID == id));
                    }
                }
                foreach (GXAmiUserActionLog it in logs)
                {
                    events.Add(new GXEventsItem(ActionTargets.DeviceError, Actions.Remove, it));
                }
                Db.DeleteByIds <GXAmiUserActionLog>(logs);
            }
            AppHost host = this.ResolveService <AppHost>();

            host.SetEvents(Db, this.Request, id, events);
            return(new GXActionDeleteResponse());
        }