예제 #1
0
        public virtual async Task <bool> CreateRoleAsync(IPermissionRole role)
        {
            if (role == null)
            {
                throw new ArgumentNullException(nameof(role));
            }

            if (await GetRoleAsync(role.Id) != null)
            {
                return(false);
            }

            m_PermissionRolesDataStore.Roles.Add(new PermissionRoleData
            {
                Priority       = role.Priority,
                Id             = role.Id,
                DisplayName    = role.DisplayName,
                Parents        = new HashSet <string>(role.Parents, StringComparer.InvariantCultureIgnoreCase),
                Permissions    = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase),
                IsAutoAssigned = role.IsAutoAssigned
            });

            await m_PermissionRolesDataStore.SaveChangesAsync();

            return(true);
        }
        public virtual async Task <bool> UpdateRoleAsync(IPermissionRole role)
        {
            if (await GetRoleAsync(role.Id) == null)
            {
                return(false);
            }

            if (m_PermissionRolesDataStore.Roles == null)
            {
                return(false);
            }

            var roleData = m_PermissionRolesDataStore.Roles.First(d => d.Id.EndsWith(role.Id));

            roleData.DisplayName    = role.DisplayName;
            roleData.IsAutoAssigned = role.IsAutoAssigned;
            roleData.Parents        = role.Parents;
            roleData.Permissions    = role.Parents;
            roleData.Priority       = role.Priority;
            roleData.Data ??= new Dictionary <string, object>();

            await m_PermissionRolesDataStore.SaveChangesAsync();

            return(true);
        }
예제 #3
0
        public virtual async Task <bool> UpdateRoleAsync(IPermissionRole role)
        {
            if (role == null)
            {
                throw new ArgumentNullException(nameof(role));
            }

            if (await GetRoleAsync(role.Id) == null)
            {
                return(false);
            }

            var roleData = m_PermissionRolesDataStore.Roles.FirstOrDefault(d => d?.Id?.EndsWith(role.Id) ?? false);

            if (roleData == null)
            {
                throw new Exception($"Role does not exist: {role.Id}");
            }

            roleData.DisplayName    = role.DisplayName;
            roleData.IsAutoAssigned = role.IsAutoAssigned;
            roleData.Parents        = role.Parents;
            roleData.Permissions    = role.Parents;
            roleData.Priority       = role.Priority;
            roleData.Data ??= new Dictionary <string, object?>();

            await m_PermissionRolesDataStore.SaveChangesAsync();

            return(true);
        }
        public Task <bool> CreateRoleAsync(IPermissionRole role)
        {
            if (role == null)
            {
                throw new ArgumentNullException(nameof(role));
            }

            return(m_BasePermissionRoleStore.CreateRoleAsync(role));
        }
예제 #5
0
        public async Task <bool> UpdateRoleAsync(IPermissionRole role)
        {
            if (IsRocketModRole(role.Id))
            {
                throw new System.NotSupportedException();
            }

            return(await m_BasePermissionRoleStore.UpdateRoleAsync(role));
        }
예제 #6
0
 protected override async Task ExecuteUpdateAsync(IPermissionActor target, IPermissionRole permissionRole)
 {
     if (await m_PermissionRoleStore.AddRoleToActorAsync(target, permissionRole.Id))
     {
         await Context.Actor.PrintMessageAsync($"Added \"{target.DisplayName}\" to \"{permissionRole.DisplayName}\".", Color.DarkGreen);
     }
     else
     {
         await Context.Actor.PrintMessageAsync($"Failed to add \"{target.DisplayName}\" to \"{permissionRole.DisplayName}\".", Color.DarkRed);
     }
 }
        public Task <bool> UpdateRoleAsync(IPermissionRole role)
        {
            if (role == null)
            {
                throw new ArgumentNullException(nameof(role));
            }

            if (RocketModIntegrationEnabled() && IsRocketModRole(role.Id))
            {
                Task.FromException(new NotSupportedException("Updating RocketMod roles from OpenMod is not supported."));
            }

            return(m_BasePermissionRoleStore.UpdateRoleAsync(role));
        }
예제 #8
0
        private bool UpdateGroupPermission(IPermissionRole role, string permission, bool add)
        {
            var group = R.Permissions.GetGroup(role.Id);

            if (group == null)
            {
                return(false);
            }

            if (add)
            {
                group.Permissions.Add(new Permission(permission));
            }
            else
            {
                group.Permissions.Remove(new Permission(permission));
            }

            R.Permissions.SaveGroup(group);
            return(true);
        }
예제 #9
0
 protected abstract Task ExecuteUpdateAsync(IPermissionActor target, IPermissionRole permissionRole);
예제 #10
0
 public Task <bool> CreateRoleAsync(IPermissionRole role)
 {
     return(m_BasePermissionRoleStore.CreateRoleAsync(role));
 }