예제 #1
0
        public async Task <IActionResult> Login(LoginMemberDto loginMemberDto)
        {
            Member member = await _authService.Login(loginMemberDto);

            if (member == null)
            {
                return(Unauthorized("İstifadəçi adında və ya kodda səflik var."));
            }
            string role = await _authService.Role(member);

            var claims = new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, member.Id.ToString()),
                new Claim(ClaimTypes.Name, member.Name + " " + member.Surname),
                new Claim(ClaimTypes.GivenName, member.UserName),
                new Claim(ClaimTypes.Role, role)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AppSettings:Token").Value));

            var publicKey = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescription = new SecurityTokenDescriptor()
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(365),
                SigningCredentials = publicKey
            };

            var JWThandler = new JwtSecurityTokenHandler();
            var token      = JWThandler.CreateToken(tokenDescription);

            return(Ok(new { Token = JWThandler.WriteToken(token) }));
        }
예제 #2
0
        public async Task <Member> Login(LoginMemberDto loginMemberDto)
        {
            Member member = await _memberRepository.GetMember(loginMemberDto.UserName);

            if (member == null)
            {
                return(null);
            }
            if (!member.Password.DecryptTextWithBCrypt(loginMemberDto.Password))
            {
                return(null);
            }

            return(member);
        }