Beispiel #1
0
        public async Task <TenantLoginDto> Login(TenantOrEducatorLoginDto input)
        {
            var user = await _tenantRepository.GetAll()
                       .FirstOrDefaultAsync(x => x.Email == input.Email);

            if (user == null)
            {
                throw new Exception("There is no user!");
            }
            var decodedPassword = SecurePasswordHasherHelper.Verify(input.Password, user.Password);

            if (!decodedPassword)
            {
                return(null);
            }

            var result = new TenantLoginDto
            {
                Id = user.Id, EntityType = EntityType.Tenant, TenantName = user.TenantName
            };

            return(result);
        }
Beispiel #2
0
        public async Task <IActionResult> Post([FromBody] TenantOrEducatorLoginDto request)
        {
            if (ModelState.IsValid)
            {
                if (request.EntityType == "Tenant")
                {
                    var loginData = await _tenantAppService.Login(request);

                    if (loginData == null)
                    {
                        return(NotFound());
                    }

                    var claims = new[]
                    {
                        new Claim(JwtRegisteredClaimNames.Sub, request.Email),
                        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
                    };

                    var token = new JwtSecurityToken
                                (
                        issuer: _configuration["Issuer"],
                        audience: _configuration["Audience"],
                        claims: claims,
                        expires: DateTime.UtcNow.AddDays(30),                                                                                      // 30 gün geçerli olacak
                        notBefore: DateTime.UtcNow,
                        signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["SigningKey"])), //appsettings.json içerisinde bulunan signingkey değeri
                                                                   SecurityAlgorithms.HmacSha256)
                                );
                    return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), loginData }));
                }

                if (request.EntityType == "Educator")
                {
                    var loginData = await _educatorAppService.Login(request);

                    if (loginData == null)
                    {
                        return(NotFound());
                    }


                    var claims = new[]
                    {
                        new Claim(JwtRegisteredClaimNames.Sub, request.Email),
                        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
                    };

                    var token = new JwtSecurityToken
                                (
                        issuer: _configuration["Issuer"],
                        audience: _configuration["Audience"],
                        claims: claims,
                        expires: DateTime.UtcNow.AddDays(30),                                                                                      // 30 gün geçerli olacak
                        notBefore: DateTime.UtcNow,
                        signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["SigningKey"])), //appsettings.json içerisinde bulunan signingkey değeri
                                                                   SecurityAlgorithms.HmacSha256)
                                );
                    return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), loginData }));
                }
            }
            return(BadRequest());
        }