emr push
This commit is contained in:
parent
2bd34ec022
commit
0586c201c5
@ -1,6 +1,9 @@
|
||||
using System.Security.Claims;
|
||||
using API.Dtos;
|
||||
using API.Errors;
|
||||
using Core.Entities.Identity;
|
||||
using Core.Interfaces;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
@ -10,12 +13,43 @@ namespace API.Controllers
|
||||
{
|
||||
private readonly UserManager<AppUser> _userManager;
|
||||
private readonly SignInManager<AppUser> _signInManager;
|
||||
public AccountController(UserManager<AppUser> userManager, SignInManager<AppUser> signInManager)
|
||||
private readonly ITokenService _tokenService;
|
||||
public AccountController(UserManager<AppUser> userManager, SignInManager<AppUser> signInManager, ITokenService tokenService)
|
||||
{
|
||||
_tokenService = tokenService;
|
||||
_signInManager = signInManager;
|
||||
_userManager = userManager;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<UserDto>> GetCurrentUser()
|
||||
{
|
||||
var email = User.FindFirstValue(ClaimTypes.Email);
|
||||
var user = await _userManager.FindByEmailAsync(email);
|
||||
return new UserDto
|
||||
{
|
||||
Email = user.Email,
|
||||
Token = _tokenService.CreateToken(user),
|
||||
DisplayName = user.DisplayName
|
||||
};
|
||||
}
|
||||
|
||||
[HttpGet("emailexists")]
|
||||
public async Task<ActionResult<bool>> CheckEmailExistsAsync([FromQuery] string email){
|
||||
return await _userManager.FindByEmailAsync(email) != null;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpGet("address")]
|
||||
public async Task<ActionResult<Address>> GetUserAddress()
|
||||
{
|
||||
var email = User.FindFirstValue(ClaimTypes.Email);
|
||||
var user = await _userManager.FindByEmailAsync(email);
|
||||
return user.Address;
|
||||
|
||||
}
|
||||
|
||||
[HttpPost("login")]
|
||||
public async Task<ActionResult<UserDto>> Login(LoginDto loginDto)
|
||||
{
|
||||
@ -26,7 +60,7 @@ namespace API.Controllers
|
||||
return new UserDto
|
||||
{
|
||||
Email = user.Email,
|
||||
Token = "This will be a token",
|
||||
Token = _tokenService.CreateToken(user),
|
||||
DisplayName = user.DisplayName
|
||||
};
|
||||
}
|
||||
@ -46,9 +80,10 @@ namespace API.Controllers
|
||||
return new UserDto
|
||||
{
|
||||
DisplayName = user.DisplayName,
|
||||
Token = "This will be a token",
|
||||
Token = _tokenService.CreateToken(user),
|
||||
Email = user.Email
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using API.Errors;
|
||||
using Infrastructure.Data;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace API.Controllers
|
||||
@ -12,6 +13,13 @@ namespace API.Controllers
|
||||
_context = context;
|
||||
}
|
||||
|
||||
[HttpGet("testauth")]
|
||||
[Authorize]
|
||||
public ActionResult<string> GetSecretText()
|
||||
{
|
||||
return "secret stuff";
|
||||
}
|
||||
|
||||
[HttpGet("notfound")]
|
||||
public ActionResult GetNotFoundRequest()
|
||||
{
|
||||
|
@ -1,6 +1,7 @@
|
||||
using API.Errors;
|
||||
using Core.Interfaces;
|
||||
using Infrastructure.Data;
|
||||
using Infrastructure.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace API.Extensions
|
||||
@ -9,6 +10,7 @@ namespace API.Extensions
|
||||
{
|
||||
public static IServiceCollection AddApplicationServices(this IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<ITokenService, TokenService>();
|
||||
services.AddScoped<iProductRepository, ProductRepository>();
|
||||
services.AddScoped<IBasketRepository, BasketRepository>();
|
||||
services.AddScoped(typeof(IGenericRepository<>), (typeof(GenericRepository<>)));
|
||||
|
@ -1,19 +1,32 @@
|
||||
using System.Text;
|
||||
using Core.Entities.Identity;
|
||||
using Infrastructure.Identity;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace API.Extensions
|
||||
{
|
||||
public static class IdentityServiceExtensions
|
||||
{
|
||||
public static IServiceCollection AddIdentityServices(this IServiceCollection services)
|
||||
public static IServiceCollection AddIdentityServices(this IServiceCollection services, IConfiguration config)
|
||||
{
|
||||
var builder = services.AddIdentityCore<AppUser>();
|
||||
builder = new IdentityBuilder(builder.UserType, builder.Services);
|
||||
builder.AddEntityFrameworkStores<AppIdentityDbContext>();
|
||||
builder.AddSignInManager<SignInManager<AppUser>>();
|
||||
|
||||
services.AddAuthentication();
|
||||
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||
.AddJwtBearer(options =>{
|
||||
options.TokenValidationParameters = new TokenValidationParameters
|
||||
{
|
||||
ValidateIssuerSigningKey = true,
|
||||
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["Token:Key"])),
|
||||
ValidIssuer = config["Token:Issuer"],
|
||||
ValidateIssuer = true,
|
||||
ValidateAudience = false
|
||||
};
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ namespace API
|
||||
|
||||
services.AddControllers();
|
||||
services.AddApplicationServices();
|
||||
services.AddIdentityServices();
|
||||
services.AddIdentityServices(_config);
|
||||
services.AddSwaggerDocumentation();
|
||||
services.AddDbContext<StoreContext>(x => x.UseSqlite(_config.GetConnectionString("DefaultConnection")));
|
||||
services.AddDbContext<AppIdentityDbContext>(x => x.UseSqlite(_config.GetConnectionString("IdentityConnection")));
|
||||
@ -51,6 +51,7 @@ namespace API
|
||||
app.UseRouting();
|
||||
app.UseStaticFiles();
|
||||
app.UseCors("CorsPolicy");
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
app.UseSwaggerDocumentation();
|
||||
app.UseEndpoints(endpoints =>
|
||||
|
@ -2,7 +2,7 @@
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
"Microsoft.AspNetCore": "Information"
|
||||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
@ -10,5 +10,9 @@
|
||||
"IdentityConnection": "Data source=indentity.db",
|
||||
"Redis": "localhost"
|
||||
},
|
||||
"Token": {
|
||||
"Key": "super secret key",
|
||||
"Issuer": "https://localhost:5001"
|
||||
},
|
||||
"ApiUrl": "https://localhost:5001/"
|
||||
}
|
||||
|
@ -22,8 +22,8 @@ namespace Infrastructure.Services
|
||||
{
|
||||
var claims = new List<Claim>
|
||||
{
|
||||
new Claim(ClaimTypes.Email, user.Email),
|
||||
new Claim(ClaimTypes.GivenName, user.DisplayName)
|
||||
new Claim(JwtRegisteredClaimNames.Email, user.Email),
|
||||
new Claim(JwtRegisteredClaimNames.GivenName, user.DisplayName)
|
||||
};
|
||||
|
||||
var creds = new SigningCredentials(_key, SecurityAlgorithms.HmacSha512Signature);
|
||||
|
Loading…
Reference in New Issue
Block a user