Esempio n. 1
0
 /// <summary>
 /// Verifica se o usuário tem uma permissão específica.
 /// </summary>
 /// <param name="user">O usuário</param>
 /// <param name="perm">A permissão</param>
 /// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
 public static void CheckPermission(IExtendedPrincipal user, IPermission perm, string msgFormat)
 {
     if (!HasPermission(user, perm))
     {
         throw new AccessDeniedException(user, perm, msgFormat);
     }
 }
		/// <summary>
		/// Verifica se o usuário satisfaz as permissões demandadas.
		/// Caso o usuário não tenha permissão, lança uma exceção de segurança.
		/// </summary>
		/// <param name="t">O tipo para verificar.</param>
		/// <param name="user">Usuário</param>
		/// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
		/// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
		public static void CheckPermissions(Type t, IExtendedPrincipal user, string msgFormat)
		{
			if (user == null)
				throw new ArgumentNullException("user", "User must not be NULL.");

			foreach (IPermission perm in GetDemandedPermissions(t, 1))
				CheckPermission(user, perm, msgFormat);
		}
Esempio n. 3
0
        /// <summary>
        /// Verifica se o usuário tem uma permissão específica.
        /// </summary>
        /// <param name="user">O usuário</param>
        /// <param name="perm">A permissão a ser verificada</param>
        /// <returns>Verdadeiro se o usuário tem a permissão, falso caso contrário</returns>
        public static bool HasPermission(IExtendedPrincipal user, IPermission perm)
        {
            foreach (IRole role in user.Roles)
            {
                if (role.HasPermission(perm))
                {
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 4
0
        /// <summary>
        /// Verifica se o usuário satisfaz as permissões demandadas.
        /// Caso o usuário não tenha permissão, lança uma exceção de segurança.
        /// </summary>
        /// <param name="t">O tipo para verificar.</param>
        /// <param name="user">Usuário</param>
        /// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
        /// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
        public static void CheckPermissions(Type t, IExtendedPrincipal user, string msgFormat)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user", "User must not be NULL.");
            }

            foreach (IPermission perm in GetDemandedPermissions(t, 1))
            {
                CheckPermission(user, perm, msgFormat);
            }
        }
Esempio n. 5
0
        public virtual T LoadUser()
        {
            IExtendedPrincipal principal = Principal;

            if (principal == null)
            {
                throw new AppError("Erro ao obter usuário conectado", "Usuário conectado não disponível.");
            }

            int uid = principal.Identity.UserID;

            return(ActiveRecordMediator <T> .FindByPrimaryKey(uid, false));
        }
		/// <summary>
		/// Verifica se o usuário satisfaz as permissões demandadas.
		/// Caso o usuário não tenha permissão, lança uma exceção de segurança.
		/// </summary>
		/// <param name="en">As permissões ou attributos <see cref="DemandPermissionsAttribute"/> a verificar.</param>
		/// <param name="user">Usuário</param>
		/// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
		/// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
		public static void CheckPermissions(IExtendedPrincipal user, IEnumerable en, string msgFormat)
		{
			if (user == null)
				throw new ArgumentNullException("user", "User must not be NULL.");

			foreach (object obj in en)
			{
				if (obj is DemandPermissionsAttribute)
					foreach (IPermission perm in ((DemandPermissionsAttribute) obj).Permissions)
						CheckPermission(user, perm, msgFormat);

				if (obj is IPermission)
					CheckPermission(user, (IPermission) obj, msgFormat);
			}
		}
        public void Demand()
        {
            IPrincipal principal = Thread.CurrentPrincipal;

            IExtendedPrincipal extendedPrincipal = principal as IExtendedPrincipal;

            if (extendedPrincipal == null)
            {
                throw new SecurityException("The current principal does not implement IExtendedPrincipal");
            }

            if (!extendedPrincipal.HasPermission(permissionName))
            {
                throw new SecurityException("Current principal does not have permission " + permissionName);
            }
        }
        /// <summary>
        /// Cria um objeto <see cref="IExtendedPrincipal"/>, com base no <see cref="ISimpleAppUser"/>
        /// passado. Dificilmente será necessário sobrecrever esse método.
        /// </summary>
        protected virtual IExtendedPrincipal CriaIPrincipal(ISimpleAppUser user, bool autenticado)
        {
            if (user == null)
            {
                return(null);
            }

            var bld = new UserBuilder(user.Id, autenticado, user.Name)
            {
                Login = user.Login
            };

            if (user.Roles != null)
            {
                foreach (IAppRole role in user.Roles)
#pragma warning disable 618,612
                {
                    foreach (IAppPermission p in role.Permissions)
                    {
                        bld.AddPermission(role.Name, Permission.SetPermission(p.Id, p.Name));
                    }
                }
#pragma warning restore 618,612
            }

            IExtendedPrincipal u = bld.Build();
            if (user.Roles != null)
            {
                foreach (IAppRole role in user.Roles)
                {
#pragma warning disable 618,612
                    if (role != null && role.Profile != null)
                    {
                        u.Properties["skin"] = role.Profile.Skin;
                        u.Properties["home"] = role.Profile.Home;
                    }
#pragma warning restore 618,612
                }
            }
            return(u);
        }
        /// <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));
        }
Esempio n. 10
0
        /// <summary>
        /// Verifica se o usuário satisfaz as permissões demandadas.
        /// Caso o usuário não tenha permissão, lança uma exceção de segurança.
        /// </summary>
        /// <param name="en">As permissões ou attributos <see cref="DemandPermissionsAttribute"/> a verificar.</param>
        /// <param name="user">Usuário</param>
        /// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
        /// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
        public static void CheckPermissions(IExtendedPrincipal user, IEnumerable en, string msgFormat)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user", "User must not be NULL.");
            }

            foreach (object obj in en)
            {
                if (obj is DemandPermissionsAttribute)
                {
                    foreach (IPermission perm in ((DemandPermissionsAttribute)obj).Permissions)
                    {
                        CheckPermission(user, perm, msgFormat);
                    }
                }

                if (obj is IPermission)
                {
                    CheckPermission(user, (IPermission)obj, msgFormat);
                }
            }
        }
		/// <summary>
		/// Cria uma nova exceção de acesso negado.
		/// </summary>
		/// <param name="user">O usuário que tentou realizar o acesso.</param>
		/// <param name="perm">A permissão que foi negada ao usuário.</param>
		/// <param name="msgFormat">Formato da mensagem de erro. 
		/// Utilizar: {0} para o id do usuário e {1} para o nome da permissão.</param>
		public AccessDeniedException(IExtendedPrincipal user, IPermission perm, string msgFormat)
			: base(String.Format((msgFormat ?? DefaultMessageFormat), user, perm))
		{
			this.user = user;
			this.perm = perm;
		}
 /// <summary>
 /// Cria uma nova exceção de acesso negado.
 /// </summary>
 /// <param name="user">O usuário que tentou realizar o acesso.</param>
 /// <param name="perm">A permissão que foi negada ao usuário.</param>
 /// <param name="msgFormat">Formato da mensagem de erro.
 /// Utilizar: {0} para o id do usuário e {1} para o nome da permissão.</param>
 public AccessDeniedException(IExtendedPrincipal user, IPermission perm, string msgFormat)
     : base(String.Format((msgFormat ?? DefaultMessageFormat), user, perm))
 {
     this.user = user;
     this.perm = perm;
 }
Esempio n. 13
0
 /// <summary>
 /// Verifica se o usuário satisfaz as permissões demandadas.
 /// Caso o usuário não tenha permissão, lança uma exceção de segurança.
 /// </summary>
 /// <param name="user">Usuário</param>
 /// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
 /// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
 public static void CheckPermissions(IExtendedPrincipal user, string msgFormat)
 {
     CheckPermissions(null, user, msgFormat);
 }
 public AccessDeniedException(IExtendedPrincipal user, string perm)
     : this(user, Permission.GetPermission(perm), DefaultMessageFormat)
 {
 }
		/// <summary>
		/// Verifica se o usuário tem uma permissão específica.
		/// </summary>
		/// <param name="user">O usuário</param>
		/// <param name="perm">O código da permissão a ser verificada</param>
		/// <returns>Verdadeiro se o usuário tem a permissão, falso caso contrário</returns>
		public static bool HasPermission(IExtendedPrincipal user, string perm)
		{
			return HasPermission(user, Permission.GetPermission(perm));
		}
Esempio n. 16
0
 public bool Test(IExtendedPrincipal user)
 {
     return(PermissionChecker.HasPermission(user, this));
 }
Esempio n. 17
0
 /// <summary>
 /// Verifica se o usuário tem todas as permissões necessárias
 /// no contexto atual.
 /// </summary>
 /// <param name="user">O usuário</param>
 /// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
 public static void CheckPermissions(IExtendedPrincipal user)
 {
     CheckPermissions(user, null);
 }
Esempio n. 18
0
		public void Check(IExtendedPrincipal user)
		{
			PermissionChecker.CheckPermission(user, this, null);
		}
Esempio n. 19
0
		public bool Test(IExtendedPrincipal user)
		{
			return PermissionChecker.HasPermission(user, this);
		}
		/// <summary>
		/// Verifica se o usuário satisfaz as permissões demandadas.
		/// Caso o usuário não tenha permissão, lança uma exceção de segurança.
		/// </summary>
		/// <param name="user">Usuário</param>
		/// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
		/// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
		public static void CheckPermissions(IExtendedPrincipal user, string msgFormat)
		{
			CheckPermissions(null, user, msgFormat);
		}
		/// <summary>
		/// Verifica se o usuário tem uma permissão específica.
		/// </summary>
		/// <param name="user">O usuário</param>
		/// <param name="perm">A permissão</param>
		/// <param name="msgFormat">Formato da mensagem de erro. Utilizar {0} para nome do usuário e {1} para nome da permissão.</param>
		public static void CheckPermission(IExtendedPrincipal user, IPermission perm, string msgFormat)
		{
			if (!HasPermission(user, perm))
				throw new AccessDeniedException(user, perm, msgFormat);
		}
		/// <summary>
		/// Verifica se o usuário tem uma permissão específica.
		/// </summary>
		/// <param name="user">O usuário</param>
		/// <param name="perm">A permissão a ser verificada</param>
		/// <returns>Verdadeiro se o usuário tem a permissão, falso caso contrário</returns>
		public static bool HasPermission(IExtendedPrincipal user, IPermission perm)
		{
			foreach (IRole role in user.Roles)
				if (role.HasPermission(perm))
					return true;

			return false;
		}
		public AccessDeniedException(IExtendedPrincipal user, string perm)
			: this(user, Permission.GetPermission(perm), DefaultMessageFormat)
		{
		}
Esempio n. 24
0
 public void Check(IExtendedPrincipal user)
 {
     PermissionChecker.CheckPermission(user, this, null);
 }
Esempio n. 25
0
 /// <summary>
 /// Verifica se o usuário tem uma permissão específica.
 /// </summary>
 /// <param name="user">O usuário</param>
 /// <param name="perm">O código da permissão a ser verificada</param>
 /// <returns>Verdadeiro se o usuário tem a permissão, falso caso contrário</returns>
 public static bool HasPermission(IExtendedPrincipal user, string perm)
 {
     return(HasPermission(user, Permission.GetPermission(perm)));
 }
		/// <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));
		}
		/// <summary>
		/// Verifica se o usuário tem todas as permissões necessárias
		/// no contexto atual.
		/// </summary>
		/// <param name="user">O usuário</param>
		/// <exception cref="AccessDeniedException">Caso o usuário não tenha as permissões necessárias no contexto atual.</exception>
		public static void CheckPermissions(IExtendedPrincipal user)
		{
			CheckPermissions(user, null);
		}