/// <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); }
/// <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); }
/// <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); } }
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)); }
/// <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> /// 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)); }
public bool Test(IExtendedPrincipal user) { return(PermissionChecker.HasPermission(user, this)); }
/// <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); }
public void Check(IExtendedPrincipal user) { PermissionChecker.CheckPermission(user, this, null); }
public bool Test(IExtendedPrincipal user) { return PermissionChecker.HasPermission(user, this); }
/// <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; }
/// <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)); }