using HotelPms.Data.Common.Auth;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.Extensions.Configuration;
|
using Microsoft.IdentityModel.Tokens;
|
using System;
|
using System.IdentityModel.Tokens.Jwt;
|
using System.Security.Claims;
|
using System.Text;
|
|
namespace HotelPms.GrpcService.Controllers
|
{
|
[Route("api/[controller]")]
|
[ApiController]
|
public class LoginController : ControllerBase
|
{
|
private readonly IConfiguration _configuration;
|
|
public LoginController(IConfiguration configuration)
|
{
|
_configuration = configuration;
|
}
|
|
[HttpPost]
|
public IActionResult Login([FromBody] LoginModel login)
|
{
|
//DBチェック
|
//var result = await _signInManager.PasswordSignInAsync(login.Email, login.Password, false, false);
|
|
//if (!result.Succeeded) return BadRequest(new LoginResult { Successful = false, Error = "Username and password are invalid." });
|
|
var claims = new[]
|
{
|
new Claim(ClaimTypes.Name, login.Name)
|
};
|
|
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JwtSecurityKey"]));
|
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
|
var expiry = DateTime.Now.AddDays(Convert.ToInt32(_configuration["JwtExpiryInDays"]));
|
|
var token = new JwtSecurityToken(
|
_configuration["JwtIssuer"],
|
_configuration["JwtAudience"],
|
claims,
|
expires: expiry,
|
signingCredentials: creds
|
);
|
|
return Ok(new LoginResult { Successful = true, Token = new JwtSecurityTokenHandler().WriteToken(token) });
|
}
|
}
|
}
|