5
5
using Microsoft . AspNetCore . Mvc ;
6
6
using Microsoft . Extensions . Options ;
7
7
using Microsoft . IdentityModel . Tokens ;
8
+ using Supermarket . ApiResponse ;
8
9
using Supermarket . Core . Models ;
9
10
using Supermarket . Resources ;
11
+ using Supermarket . V1 . Dtos . AccountDtos ;
10
12
using System ;
11
13
using System . IdentityModel . Tokens . Jwt ;
12
14
using System . Linq ;
@@ -39,16 +41,16 @@ public AccountController(UserManager<ApplicationUser> userManager, SignInManager
39
41
[ Route ( "Register" ) ]
40
42
[ ProducesResponseType ( StatusCodes . Status200OK ) ]
41
43
[ ProducesResponseType ( StatusCodes . Status400BadRequest ) ]
42
- public async Task < IActionResult > Register ( [ FromBody ] RegisterResource resource )
44
+ public async Task < IActionResult > Register ( [ FromBody ] RegisterDto registerDto )
43
45
{
44
46
var user = new ApplicationUser ( )
45
47
{
46
- UserName = resource . Email ,
47
- Email = resource . Email ,
48
- FullName = resource . FullName
48
+ UserName = registerDto . Email ,
49
+ Email = registerDto . Email ,
50
+ FullName = registerDto . FullName
49
51
} ;
50
52
51
- var result = await _userManager . CreateAsync ( user , resource . Password ) ;
53
+ var result = await _userManager . CreateAsync ( user , registerDto . Password ) ;
52
54
53
55
return Ok ( result ) ;
54
56
}
@@ -57,33 +59,36 @@ public async Task<IActionResult> Register([FromBody]RegisterResource resource)
57
59
[ Route ( "Login" ) ]
58
60
[ ProducesResponseType ( StatusCodes . Status200OK ) ]
59
61
[ ProducesResponseType ( StatusCodes . Status400BadRequest ) ]
60
- public async Task < IActionResult > Login ( [ FromBody ] LoginResource resource )
62
+ [ ProducesResponseType ( typeof ( NotFoundResponse ) , StatusCodes . Status404NotFound ) ]
63
+ [ ProducesDefaultResponseType ]
64
+ public async Task < IActionResult > Login ( [ FromBody ] LoginDto loginDto )
61
65
{
62
- var user = await _userManager . FindByNameAsync ( resource . Email ) ;
66
+ var userDb = await _userManager . FindByNameAsync ( loginDto . Email ) ;
63
67
64
- if ( user != null && await _userManager . CheckPasswordAsync ( user , resource . Password ) )
68
+ if ( userDb == null )
69
+ return NotFound ( new NotFoundResponse ( "User not found" ) ) ;
70
+
71
+ var result = await _userManager . CheckPasswordAsync ( userDb , loginDto . Password ) ;
72
+
73
+ if ( ! result )
74
+ return BadRequest ( new BadRequestResponse ( "Username or password is incorrect" ) ) ;
75
+
76
+ var tokenDescriptor = new SecurityTokenDescriptor
65
77
{
66
- var tokenDescriptor = new SecurityTokenDescriptor
67
- {
68
- Subject = new ClaimsIdentity ( new Claim [ ]
78
+ Subject = new ClaimsIdentity ( new Claim [ ]
69
79
{
70
- new Claim ( "UserId" , user . Id . ToString ( ) )
80
+ new Claim ( "UserId" , userDb . Id . ToString ( ) )
71
81
} ) ,
72
- Expires = DateTime . UtcNow . AddDays ( 1 ) ,
73
- SigningCredentials = new SigningCredentials (
82
+ Expires = DateTime . UtcNow . AddDays ( 1 ) ,
83
+ SigningCredentials = new SigningCredentials (
74
84
new SymmetricSecurityKey ( Encoding . UTF8 . GetBytes ( _appSettings . JWT_Secret ) ) ,
75
85
SecurityAlgorithms . HmacSha256Signature )
76
- } ;
77
- var tokenHandler = new JwtSecurityTokenHandler ( ) ;
78
- var securityToken = tokenHandler . CreateToken ( tokenDescriptor ) ;
79
- var token = tokenHandler . WriteToken ( securityToken ) ;
86
+ } ;
87
+ var tokenHandler = new JwtSecurityTokenHandler ( ) ;
88
+ var securityToken = tokenHandler . CreateToken ( tokenDescriptor ) ;
89
+ var token = tokenHandler . WriteToken ( securityToken ) ;
80
90
81
- return Ok ( new { token } ) ;
82
- }
83
- else
84
- {
85
- return BadRequest ( new { message = "Username or password is incorrect" } ) ;
86
- }
91
+ return Ok ( new { token } ) ;
87
92
}
88
93
89
94
[ HttpGet ]
@@ -95,9 +100,9 @@ public async Task<IActionResult> GetUserInfo()
95
100
var userId = User . Claims . First ( c => c . Type == "UserId" ) . Value ;
96
101
var user = await _userManager . FindByIdAsync ( userId ) ;
97
102
98
- var userProfileResource = _mapper . Map < ApplicationUser , UserProfileResource > ( user ) ;
103
+ var userInfoDto = _mapper . Map < ApplicationUser , UserInfoDto > ( user ) ;
99
104
100
- return Ok ( userProfileResource ) ;
105
+ return Ok ( userInfoDto ) ;
101
106
}
102
107
}
103
108
}
0 commit comments