/// <summary>
        /// Verifica se determinado usuário possui determinada permissão.
        /// Caso não possua a permissão, será lançada uma exceção <see cref="PermissionDeniedException"/>.
        /// </summary>
        /// <param name="principal">O usuário</param>
        /// <param name="permission">A permissão a verificar. Se não for especificada ou estiver em branco, a verificação retorna, sem erros</param>
        /// <param name="errorMessage">A mensagem de erro a exibir, caso a permissão falhe</param>
        /// <param name="errorMessageArguments">Os argumentos para montar a mensagem de erro</param>
        /// <exception cref="PermissionDeniedException">Caso o usuário não possua a permissão solicitada</exception>
        /// <exception cref="ArgumentNullException">Caso não seja especificado o <paramref name="principal"/></exception>
        public void CheckPermission(IExtendedPrincipal principal, string permission, string errorMessage, params object[] errorMessageArguments)
        {
            if (String.IsNullOrEmpty(permission))
            {
                return;
            }

            if (principal == null)
            {
                throw new ArgumentNullException("principal", "Parâmetro 'principal' não pode ser nulo");
            }

#pragma warning disable 618,612
            if (PermissionChecker.HasPermission(principal, permission))
            {
                return;
            }
#pragma warning restore 618,612

            throw new PermissionDeniedException(String.Format(errorMessage, errorMessageArguments));
        }
示例#2
0
 public bool Test(IExtendedPrincipal user)
 {
     return(PermissionChecker.HasPermission(user, this));
 }
示例#3
0
 public static bool HasPermission(IPermission perm)
 {
     return(PermissionChecker.HasPermission(CurrentUser, perm));
 }