示例#1
0
        public bool HasPermission(IPermissionApplication permissionApplication, IUserContext userContext)
        {
            if (permissionApplication == null)
            {
                return(true);
            }

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

            var role = _internalRoleRepository.GetById(userContext.RoleId);

            if (permissionApplication is IPermission)
            {
                return(role.HasPermission((IPermission)permissionApplication));
            }
            else if (permissionApplication is CompositePermissionApplication)
            {
                foreach (var permission in ((CompositePermissionApplication)permissionApplication).Permissions)
                {
                    if (role.HasPermission(permission))
                    {
                        return(true);
                    }
                }

                return(false);
            }
            else
            {
                throw new InvalidOperationException("Unknown implementation of IPermissionApplication");
            }
        }
示例#2
0
 public virtual void EnforcePermission(IPermissionApplication permission, IUserContext userContext)
 {
     if (!HasPermission(permission, userContext))
     {
         throw new PermissionValidationFailedException(permission, userContext);
     }
 }
示例#3
0
 private static string FormatMessage(
     IPermissionApplication permission,
     IUserContext userContext
     )
 {
     return($"Permission Validation Check Failed. Permission Type: { permission?.ToString() }. UserId: { userContext?.UserId }");
 }
示例#4
0
 public PermissionValidationFailedException(
     IPermissionApplication permission,
     IUserContext userContext
     )
     : base(FormatMessage(permission, userContext))
 {
     Permission  = permission;
     UserContext = userContext;
 }
示例#5
0
 public IndexModel(IRoleApplication roleApplication, IPermissionApplication permissionApplication)
 {
     _roleApplication       = roleApplication;
     _permissionApplication = permissionApplication;
     Permissions            = new SelectList(_permissionApplication.GetAllForAdmin(), "Id", "Name");
 }
示例#6
0
        public virtual async Task EnforcePermissionAsync(IPermissionApplication permission)
        {
            var userContext = await _userContextService.GetCurrentContextAsync();

            EnforcePermission(permission, userContext);
        }
示例#7
0
        public virtual async Task <bool> HasPermissionAsync(IPermissionApplication permissionApplication)
        {
            var userContext = await _userContextService.GetCurrentContextAsync();

            return(HasPermission(permissionApplication, userContext));
        }
示例#8
0
 public PermissionsController(IRequestInfoService info, IPermissionApplication permissionApp)
     : base(info)
     => this.permissionApp = permissionApp;
 public void EnforcePermission(IPermissionApplication permission)
 {
     EnforcePermission(permission, _userContextService.GetCurrentContext());
 }
 public bool HasPermission(IPermissionApplication permissionApplication)
 {
     return(HasPermission(permissionApplication, _userContextService.GetCurrentContext()));
 }