/// <summary> /// Verifica se o usuário tem acesso ao recurso /// </summary> /// <exception cref="Exception">Caso o usuário não tiver autorização dispara uma exçecão</exception> /// <param name="pPermId">ID da Permissão</param> /// <param name="accessRequest">Permissão requerida</param> /// <param name="userName">Empresa</param> /// <param name="companyDb">Banco de dados da empresa</param> /// <param name="throwException">Gera Exceção</param> public static bool HasPermission(string pPermId, PermissionType accessRequest, string userName, string companyDb, bool throwException = true) { var user = B1Helper.GetUser(userName, companyDb); if (user.SUPERUSER == eYesNo.Yes) { return(true); } var permi = new UserAuthorization(companyDb); var hasPermission = false; if (permi.GetByKey(user.InternalK, pPermId)) { switch (accessRequest) { case PermissionType.Full: hasPermission = permi.Permission == PermissionType.Full; break; case PermissionType.ReadOnly: hasPermission = permi.Permission != PermissionType.None; break; } } if (!hasPermission && SboVersion.EqualOrMoreThenSap91Pl04()) { var groupUserAssociation = new GroupUserAssociation(companyDb); if (groupUserAssociation.GetByKey(user.UserId)) { var groupAuthorization = new GroupAuthorization(companyDb); if (groupAuthorization.GetByKey(groupUserAssociation.GroupId, pPermId)) { switch (accessRequest) { case PermissionType.Full: hasPermission = groupAuthorization.Permission == PermissionType.Full; break; case PermissionType.ReadOnly: hasPermission = groupAuthorization.Permission != PermissionType.None; break; } } } } if (!hasPermission && throwException) { throw new Exception("Usuário não tem permissão para acessar esse recurso !"); } return(hasPermission); }