Ejemplo n.º 1
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());
        }