예제 #1
0
        public async Task <bool> CheckPermission(long userId, string serviceId)
        {
            var userRoles = await GetUserRoles(userId, Status.Valid);

            foreach (var userRole in userRoles)
            {
                if (await _roleDomainService.CheckPermission(userRole.Id, serviceId))
                {
                    return(true);
                }
            }
            return(await _userGroupDomainService.CheckPermission(userId, serviceId));
        }
예제 #2
0
        public async Task <bool> CheckPermission(long userId, string serviceId)
        {
            var userGroups = await _userUserGroupRelationRepository.GetAllAsync(p => p.UserId == userId);

            foreach (var userGroup in userGroups)
            {
                var userGroupRoles = await GetUserGroupRoles(userGroup.UserGroupId);

                foreach (var userGroupRole in userGroupRoles)
                {
                    if (await _roleDomainService.CheckPermission(userGroupRole.Id, serviceId))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #3
0
        public async Task <bool> CheckPermission(long userId, string serviceId)
        {
            var querySql =
                @"SELECT ug.* FROM UserGroup as ug INNER JOIN UserUserGroupRelation as uugr ON ug.Id = uugr.UserGroupId AND ug.TenantId=@TenantId
                            WHERE  ug.IsDeleted=@IsDeleted 
                            AND ug.`Status`=@Status 
                            AND uugr.UserId=@UserId 
                            AND uugr.TenantId=@TenantId";
            var sqlParams = new Dictionary <string, object>
            {
                { "IsDeleted", HeroConstants.UnDeletedFlag }, { "Status", Status.Valid }, { "UserId", userId }, { "TenantId", _session.TenantId }
            };

            await using var conn = Connection;
            var userGroups = await conn.QueryAsync <UserGroup>(querySql, sqlParams);

            foreach (var userGroup in userGroups)
            {
                var userGroupPermissions = await GetUserGroupPermissions(userGroup.Id);

                foreach (var userGroupPermission in userGroupPermissions)
                {
                    if (await _operationDomainService.CheckPermission(userGroupPermission.OperationId, serviceId))
                    {
                        return(true);
                    }
                }

                var userGroupRoles = await GetUserGroupRoleOutputs(userGroup.Id, Status.Valid);

                foreach (var userGroupRole in userGroupRoles)
                {
                    if (await _roleDomainService.CheckPermission(userGroupRole.Id, serviceId))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }