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)); }
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); }
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); }