parent
5ed8073c35
commit
b1b831f136
|
@ -32,8 +32,7 @@ public class BlogCategoryController : ICarterModule
|
|||
}
|
||||
|
||||
// GET:Get All Entity
|
||||
public async Task<IResult> GetAllAsync([FromQuery] int? page, IRepositoryWrapper repositoryWrapper,
|
||||
CancellationToken cancellationToken)
|
||||
public async Task<IResult> GetAllAsync([FromQuery] int? page, IRepositoryWrapper repositoryWrapper, CancellationToken cancellationToken)
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
|
@ -6,8 +6,8 @@
|
|||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<InvariantGlobalization>true</InvariantGlobalization>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<AssemblyVersion>0.0.0.9</AssemblyVersion>
|
||||
<FileVersion>0.0.0.9</FileVersion>
|
||||
<AssemblyVersion>0.2.1.10</AssemblyVersion>
|
||||
<FileVersion>0.2.1.10</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
public TUser User { get; set; }
|
||||
public string BearerToken => $"Bearer {access_token}";
|
||||
public List<string> Permissions { get; set; }
|
||||
public string RoleName { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,11 +2,8 @@
|
|||
|
||||
public interface IJwtService : IScopedDependency
|
||||
{
|
||||
Task<AccessToken<TUser>> Generate<TUser>(TUser user, Guid complexId, Guid roleId) where TUser : ApplicationUser;
|
||||
Task<AccessToken<TUser>> Generate<TUser>(TUser user, Guid complexId) where TUser : ApplicationUser;
|
||||
Task<AccessToken<TUser>> Generate<TUser>(TUser user) where TUser : ApplicationUser;
|
||||
|
||||
Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user, Guid complexId, Guid roleId) where TUser : ApplicationUser;
|
||||
Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user, Guid complexId) where TUser : ApplicationUser;
|
||||
Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user, List<string> roleNames) where TUser : ApplicationUser;
|
||||
Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user) where TUser : ApplicationUser;
|
||||
}
|
|
@ -16,24 +16,6 @@ public class JwtService : IJwtService
|
|||
_roleManager = roleManager;
|
||||
_siteSettings = siteSettings.Value;
|
||||
}
|
||||
public async Task<AccessToken<TUser>> Generate<TUser>(TUser user, Guid complexId, Guid roleId) where TUser : ApplicationUser
|
||||
{
|
||||
var tokenId = StringExtensions.GetId(8);
|
||||
var claims = await GetClaims(user, tokenId, roleId.ToString());
|
||||
claims.Add(new Claim("ComplexId", complexId.ToString()));
|
||||
|
||||
var token = BaseGenerate<TUser>(user, claims);
|
||||
token.Permissions = claims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList();
|
||||
return token;
|
||||
}
|
||||
public async Task<AccessToken<TUser>> Generate<TUser>(TUser user, Guid complexId) where TUser : ApplicationUser
|
||||
{
|
||||
var tokenId = StringExtensions.GetId(8);
|
||||
var claims = await GetClaims(user, tokenId);
|
||||
claims.Add(new Claim("ComplexId", complexId.ToString()));
|
||||
|
||||
return BaseGenerate(user, claims);
|
||||
}
|
||||
public async Task<AccessToken<TUser>> Generate<TUser>(TUser user) where TUser : ApplicationUser
|
||||
{
|
||||
var tokenId = StringExtensions.GetId(8);
|
||||
|
@ -42,26 +24,17 @@ public class JwtService : IJwtService
|
|||
|
||||
}
|
||||
|
||||
public async Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user, Guid complexId, Guid roleId) where TUser : ApplicationUser
|
||||
public async Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user, List<string> roleNames) where TUser : ApplicationUser
|
||||
{
|
||||
var tokenId = StringExtensions.GetId(8);
|
||||
var claims = await GetClaims(user, tokenId, roleId.ToString());
|
||||
claims.Add(new Claim("ComplexId", complexId.ToString()));
|
||||
var claims = await GetClaims(user, tokenId, roleNames.ToArray());
|
||||
|
||||
var token = BaseGenerate<TUserDto, TUser>(user, claims);
|
||||
token.Permissions = claims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList();
|
||||
token.RoleName = claims.FirstOrDefault(c => c.Type == ClaimTypes.Role)?.Value;
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
public async Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user, Guid complexId) where TUser : ApplicationUser
|
||||
{
|
||||
var tokenId = StringExtensions.GetId(8);
|
||||
var claims = await GetClaims(user, tokenId);
|
||||
claims.Add(new Claim("ComplexId", complexId.ToString()));
|
||||
|
||||
return BaseGenerate<TUserDto, TUser>(user, claims);
|
||||
}
|
||||
public async Task<AccessToken<TUserDto>> Generate<TUserDto, TUser>(TUser user) where TUser : ApplicationUser
|
||||
{
|
||||
var tokenId = StringExtensions.GetId(8);
|
||||
|
@ -129,19 +102,25 @@ public class JwtService : IJwtService
|
|||
|
||||
}
|
||||
|
||||
private async Task<List<Claim>> GetClaims<TUser>(TUser baseUser, string jwtId, string roleId) where TUser : ApplicationUser
|
||||
private async Task<List<Claim>> GetClaims<TUser>(TUser baseUser, string jwtId, params string[] roleNames) where TUser : ApplicationUser
|
||||
{
|
||||
var applicationRole = await _roleManager.FindByIdAsync(roleId);
|
||||
var roleClaims = await _roleManager.GetClaimsAsync(applicationRole);
|
||||
var claims = new List<Claim>();
|
||||
|
||||
foreach (var roleName in roleNames)
|
||||
{
|
||||
var applicationRole = await _roleManager.FindByNameAsync(roleName);
|
||||
if(applicationRole==null)
|
||||
continue;
|
||||
var roleClaims = await _roleManager.GetClaimsAsync(applicationRole);
|
||||
claims.AddRange(roleClaims);
|
||||
claims.Add(new Claim(ClaimTypes.Role, applicationRole.EnglishName));
|
||||
claims.Add(new Claim("RoleId", applicationRole.Id.ToString()));
|
||||
}
|
||||
claims.Add(new Claim("SignUpStatus", ((int)baseUser.SignUpStatus).ToString()));
|
||||
claims.Add(new Claim(ClaimTypes.Name, baseUser.UserName));
|
||||
claims.Add(new Claim(ClaimTypes.NameIdentifier, baseUser.Id.ToString()));
|
||||
claims.Add(new Claim(ClaimTypes.Role, applicationRole.EnglishName));
|
||||
claims.Add(new Claim("RoleId", applicationRole.Id.ToString()));
|
||||
if (baseUser.Email != null)
|
||||
claims.Add(new Claim(ClaimTypes.Email, baseUser.Email));
|
||||
claims.AddRange(roleClaims);
|
||||
claims.Add(new Claim("JwtID", jwtId));
|
||||
claims.Add(new Claim(ClaimTypes.Gender, baseUser.Gender == 0 ? "Female" : "Mail"));
|
||||
return claims;
|
||||
|
|
|
@ -145,9 +145,9 @@ public class AccountService : IAccountService
|
|||
private async Task<AccessToken<ApplicationUserSDto>> CompleteLogin(ApplicationUser user, CancellationToken cancellationToken)
|
||||
{
|
||||
AccessToken<ApplicationUserSDto> jwt;
|
||||
jwt = await _jwtService.Generate<ApplicationUserSDto, ApplicationUser>(user);
|
||||
|
||||
|
||||
var role = await _userManager.GetRolesAsync(user);
|
||||
jwt = await _jwtService.Generate<ApplicationUserSDto, ApplicationUser>(user, role.ToList());
|
||||
jwt.User.RoleName = jwt.RoleName;
|
||||
return jwt;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,5 +10,5 @@ public class BlogLDto : BaseDto<BlogLDto , Blog>
|
|||
public bool IsSuggested { get; set; }
|
||||
public Guid CategoryId { get; set; }
|
||||
public string CategoryName { get; set; } = string.Empty;
|
||||
public List<StorageFileSDto> Files { get; internal set; } = new();
|
||||
public List<StorageFileSDto> Files { get; set; } = new();
|
||||
}
|
|
@ -10,6 +10,9 @@ public class ApplicationUserSDto : BaseDto<ApplicationUserSDto, ApplicationUser>
|
|||
public Gender Gender { get; set; }
|
||||
public SignUpStatus SignUpStatus { get; set; }
|
||||
public string NationalId { get; set; } = string.Empty;
|
||||
public string Email { get; set; } = string.Empty;
|
||||
public string FullName => FirstName + " " + LastName;
|
||||
public string RoleName { get; set; } = string.Empty;
|
||||
|
||||
public List<Guid> RoleIds { get; set; } = new();
|
||||
public long BirthDateTimeStamp => DateTimeExtensions.DateTimeToUnixTimeStamp(BirthDate);
|
||||
|
|
|
@ -18,6 +18,7 @@ namespace NetinaShop.Domain.Mappers
|
|||
Gender = p1.Gender,
|
||||
SignUpStatus = p1.SignUpStatus,
|
||||
Id = p1.Id,
|
||||
Email = p1.Email,
|
||||
PhoneNumber = p1.PhoneNumber
|
||||
};
|
||||
}
|
||||
|
@ -36,6 +37,7 @@ namespace NetinaShop.Domain.Mappers
|
|||
result.Gender = p2.Gender;
|
||||
result.SignUpStatus = p2.SignUpStatus;
|
||||
result.Id = p2.Id;
|
||||
result.Email = p2.Email;
|
||||
result.PhoneNumber = p2.PhoneNumber;
|
||||
return result;
|
||||
|
||||
|
@ -51,6 +53,7 @@ namespace NetinaShop.Domain.Mappers
|
|||
Gender = p4.Gender,
|
||||
SignUpStatus = p4.SignUpStatus,
|
||||
NationalId = p4.NationalId,
|
||||
Email = p4.Email,
|
||||
Id = p4.Id
|
||||
};
|
||||
}
|
||||
|
@ -69,6 +72,7 @@ namespace NetinaShop.Domain.Mappers
|
|||
result.Gender = p5.Gender;
|
||||
result.SignUpStatus = p5.SignUpStatus;
|
||||
result.NationalId = p5.NationalId;
|
||||
result.Email = p5.Email;
|
||||
result.Id = p5.Id;
|
||||
return result;
|
||||
|
||||
|
@ -82,6 +86,7 @@ namespace NetinaShop.Domain.Mappers
|
|||
Gender = p7.Gender,
|
||||
SignUpStatus = p7.SignUpStatus,
|
||||
NationalId = p7.NationalId,
|
||||
Email = p7.Email,
|
||||
Id = p7.Id
|
||||
};
|
||||
}
|
||||
|
|
|
@ -63,7 +63,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = p8.IsHeader,
|
||||
IsPrimary = p8.IsPrimary,
|
||||
FileType = p8.FileType,
|
||||
Id = p8.Id
|
||||
Id = p8.Id,
|
||||
CreatedAt = p8.CreatedAt
|
||||
}).ToList<BlogStorageFile>(),
|
||||
Id = p7.Id
|
||||
};
|
||||
|
@ -238,7 +239,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
@ -268,7 +270,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = p8.IsHeader,
|
||||
IsPrimary = p8.IsPrimary,
|
||||
FileType = p8.FileType,
|
||||
Id = p8.Id
|
||||
Id = p8.Id,
|
||||
CreatedAt = p8.CreatedAt
|
||||
}).ToList<BrandStorageFile>(),
|
||||
Id = p7.Id
|
||||
};
|
||||
|
@ -192,7 +193,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
@ -222,7 +224,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
|
|
@ -50,7 +50,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = p8.IsHeader,
|
||||
IsPrimary = p8.IsPrimary,
|
||||
FileType = p8.FileType,
|
||||
Id = p8.Id
|
||||
Id = p8.Id,
|
||||
CreatedAt = p8.CreatedAt
|
||||
}).ToList<ProductCategoryStorageFile>(),
|
||||
Id = p7.Id
|
||||
};
|
||||
|
@ -186,7 +187,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
@ -216,7 +218,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
|
|
@ -104,7 +104,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = p16.IsHeader,
|
||||
IsPrimary = p16.IsPrimary,
|
||||
FileType = p16.FileType,
|
||||
Id = p16.Id
|
||||
Id = p16.Id,
|
||||
CreatedAt = p16.CreatedAt
|
||||
}).ToList<ProductStorageFile>(),
|
||||
Id = p13.Id
|
||||
};
|
||||
|
@ -415,7 +416,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
@ -505,7 +507,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = item.IsHeader,
|
||||
IsPrimary = item.IsPrimary,
|
||||
FileType = item.FileType,
|
||||
Id = item.Id
|
||||
Id = item.Id,
|
||||
CreatedAt = item.CreatedAt
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,8 @@ namespace NetinaShop.Domain.Mappers
|
|||
IsHeader = p1.IsHeader,
|
||||
IsPrimary = p1.IsPrimary,
|
||||
FileType = p1.FileType,
|
||||
Id = p1.Id
|
||||
Id = p1.Id,
|
||||
CreatedAt = p1.CreatedAt
|
||||
};
|
||||
}
|
||||
public static StorageFile AdaptTo(this StorageFileSDto p2, StorageFile p3)
|
||||
|
@ -35,6 +36,7 @@ namespace NetinaShop.Domain.Mappers
|
|||
result.IsPrimary = p2.IsPrimary;
|
||||
result.FileType = p2.FileType;
|
||||
result.Id = p2.Id;
|
||||
result.CreatedAt = p2.CreatedAt;
|
||||
return result;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue