示例#1
0
        /// <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);
        }