コード例 #1
0
        public static void AddRoleDefaultPermissionKeys(int roleId)
        {
            var dbPermissionRoleKeys = new List <PermissionRoleKey>();
            var dbPermissionKeys     = db.PermissionKeys
                                       .Join(db.PermissionValues.Where(x => x.IsDefault), x => x.Key, x => x.PermissionKey, (k, v) => new { Key = k.Key, DefaultValue = v.Value }).ToList();

            foreach (var dbPermissionKey in dbPermissionKeys)
            {
                var dbKey = new PermissionRoleKey();
                dbKey.PermissionKey    = dbPermissionKey.Key;
                dbKey.PermissionRoleId = roleId;
                dbKey.PermissionValue  = dbPermissionKey.DefaultValue;
                dbPermissionRoleKeys.Add(dbKey);
            }
            db.PermissionRoleKeys.AddRange(dbPermissionRoleKeys);
            db.SaveChanges();
        }
コード例 #2
0
        private static void AddPermission(string key, string keyName, string keyDescription, string groupName, PermissionValueTypes type = PermissionValueTypes.Classic)
        {
            _actualPermissionKeys.Add(key);

            PermissionKey permissionKey = db.PermissionKeys.FirstOrDefault(o => o.Key == key);

            if (permissionKey != null)
            {
                permissionKey.KeyName        = keyName;
                permissionKey.GroupName      = groupName;
                permissionKey.KeyDescription = keyDescription;
                db.SaveChanges();
                return;
            }
            permissionKey = new PermissionKey()
            {
                Key            = key,
                KeyName        = keyName,
                KeyDescription = keyDescription,
                GroupName      = groupName
            };
            List <PermissionValue> permissionValueList;

            switch (type)
            {
            case PermissionValueTypes.Classic:
                permissionValueList = new List <PermissionValue>
                {
                    new PermissionValue()
                    {
                        PermissionKey = key,
                        Value         = "false",
                        Name          = "Запрещено",
                        IsDefault     = true
                    },
                    new PermissionValue()
                    {
                        PermissionKey = key,
                        Value         = "true",
                        Name          = "Разрешено",
                        IsDefault     = false
                    },
                };
                break;

            case PermissionValueTypes.Tree:
                permissionValueList = new List <PermissionValue>
                {
                    new PermissionValue()
                    {
                        PermissionKey = key,
                        Value         = "employee",
                        Name          = "Только себя",
                        IsDefault     = true
                    },
                    new PermissionValue()
                    {
                        PermissionKey = key,
                        Value         = "departament",
                        Name          = "Подразделение",
                        IsDefault     = false
                    },
                    new PermissionValue()
                    {
                        PermissionKey = key,
                        Value         = "all",
                        Name          = "Вся организация",
                        IsDefault     = false
                    },
                };
                break;

            default:
                throw new Exception("этого не должно произойти никогда");
            }
            db.PermissionValues.AddRange(permissionValueList);
            db.PermissionKeys.Add(permissionKey);
            var dbPermissionRoleKeys = new List <PermissionRoleKey>();
            var roleIds = db.PermissionRoles.Select(x => x.Id).ToList();

            foreach (var roleId in roleIds)
            {
                var dbKey = new PermissionRoleKey();
                dbKey.PermissionKey    = key;
                dbKey.PermissionRoleId = roleId;
                dbKey.PermissionValue  = permissionValueList.Single(x => x.IsDefault).Value;
                dbPermissionRoleKeys.Add(dbKey);
            }
            db.PermissionRoleKeys.AddRange(dbPermissionRoleKeys);
            db.SaveChanges();
        }