Beispiel #1
0
        public void GrantUserPermissions(int userId, Permissions permission)
        {
            if (userId == 0)
            {
                throw new KMBitException("");
            }
            List <Admin_Actions> actions = new List <Admin_Actions>();

            using (chargebitEntities db = new chargebitEntities())
            {
                List <Admin_Actions> allActions = (from ac in db.Admin_Actions select ac).ToList <Admin_Actions>();
                PropertyInfo[]       props      = permission.GetType().GetProperties();
                foreach (PropertyInfo prop in props)
                {
                    bool hasPermission = (bool)prop.GetValue(permission);
                    if (hasPermission)
                    {
                        Admin_Actions ac = (from acc in allActions where acc.Name == prop.Name select acc).FirstOrDefault <Admin_Actions>();
                        if (ac != null)
                        {
                            actions.Add(ac);
                        }
                    }
                }
            }

            GrantUserPermissions(userId, actions);
        }
Beispiel #2
0
        /// <summary>
        /// Gets single user permissions object
        /// </summary>
        /// <param name="userId">User Id of user</param>
        /// <returns>Instance of Permissions object</returns>
        public static Permissions GetUserPermissions(int userId)
        {
            Permissions permissions = new Permissions();

            PropertyInfo[] fields          = permissions.GetType().GetProperties();
            KMBit.DAL.chargebitEntities db = null;
            try
            {
                db = new chargebitEntities();
                Admin_Users au = (from u in db.Admin_Users where u.User_Id == userId select u).FirstOrDefault <Admin_Users>();
                if (au != null && au.IsSuperAdmin)
                {
                    foreach (PropertyInfo f in fields)
                    {
                        f.SetValue(permissions, true);
                    }
                    return(permissions);
                }
                List <Admin_Actions>       actions     = (from a in db.Admin_Actions select a).ToList <Admin_Actions>();
                List <Admin_Users_Actions> userActions = (from ua in db.Admin_Users_Actions where ua.User_Id == userId select ua).ToList <Admin_Users_Actions>();
                if (userActions != null && userActions.Count > 0)
                {
                    foreach (Admin_Users_Actions ua in userActions)
                    {
                        Admin_Actions action = (from a in actions where a.Id == ua.Action_Id select a).FirstOrDefault <Admin_Actions>();
                        if (action != null)
                        {
                            foreach (PropertyInfo f in fields)
                            {
                                if (f.Name == action.Name || au.IsSuperAdmin)
                                {
                                    f.SetValue(permissions, true);
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            finally
            {
                if (db != null)
                {
                    db.Dispose();
                }
            }
            return(permissions);
        }
Beispiel #3
0
        /// <summary>
        /// Sync database user permission actions with the definitions of Permissions object
        /// </summary>
        public void SyncPermissionsWithDB()
        {
            if (logger == null)
            {
                logger = log4net.LogManager.GetLogger(typeof(PermissionManagement));
            }

            KMBit.DAL.chargebitEntities db = null;
            try
            {
                db = new chargebitEntities();
                db.Configuration.AutoDetectChangesEnabled = false;
                List <AdminActionAttribute> cates      = new List <AdminActionAttribute>();
                List <Admin_Actions>        allActions = (from action in db.Admin_Actions select action).ToList <Admin_Actions>();
                List <Admin_Categories>     allCates   = (from cate in db.Admin_Categories select cate).ToList <Admin_Categories>();

                Type           permission = typeof(Permissions);
                PropertyInfo[] fields     = permission.GetProperties();
                if (fields == null || fields.Length <= 0)
                {
                    return;
                }

                foreach (PropertyInfo field in fields)
                {
                    AdminActionAttribute attr = field.GetCustomAttribute <AdminActionAttribute>();
                    if (attr != null)
                    {
                        Admin_Actions action = (from a in allActions where a.Name == field.Name select a).FirstOrDefault <Admin_Actions>();
                        if (action == null)
                        {
                            action         = new Admin_Actions();
                            action.Name    = field.Name;
                            action.Enabled = true;
                            db.Admin_Actions.Add(action);
                        }

                        action.Category    = attr.ID;
                        action.Description = attr.ActionDescription;

                        List <Admin_Categories> categories = (from cate in allCates where cate.Id == attr.ID select cate).ToList <Admin_Categories>();
                        if (categories == null || categories.Count == 0)
                        {
                            Admin_Categories newCate = new Admin_Categories()
                            {
                                Id = attr.ID, Name = attr.CategoryName
                            };
                            db.Admin_Categories.Add(newCate);
                            allCates.Add(newCate);
                        }
                    }
                }

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                logger.Fatal(ex);
            }
            finally
            {
                if (db != null)
                {
                    db.Dispose();
                }
            }
        }