public async Task <IActionResult> Login(LoginVM input) { if (!ModelState.IsValid) { return(View("Index", input)); } var response = await _authApi.LoginAsync(new LoginRequest() { Username = input.Username, Password = input.Password }); if (response.Content != null) { var jwt = response.Content.Token; var handler = new JwtSecurityTokenHandler(); var token = handler.ReadJwtToken(jwt); var role = token.Claims.First(claim => claim.Type == "Role").Value; var accountID = Convert.ToInt32(token.Claims.First(claim => claim.Type == "id").Value); switch (role) { case "Client": return(await HandleClientLogin(accountID)); case "Administrator": return(await HandleAdministratorLogin(accountID)); case "Organizer": return(await HandleOrganizerLogin(accountID)); } } TempData["error_message"] = response.Error.Content; return(Redirect("/Index")); }
public async Task <IActionResult> Prijava(LoginRequest model) { var response = await _authApi.LoginAsync(model); if (response.StatusCode == HttpStatusCode.OK) { HttpContext.SetJwt(response.Content.Token); var jwt = response.Content.Token; var handler = new JwtSecurityTokenHandler(); var token = handler.ReadJwtToken(jwt); var role = token.Claims.First(claim => claim.Type == "role").Value; switch (role) { case "Administrator": return(Redirect("/Administrator/Home/Index")); case "Uposlenik": return(Redirect("/Uposlenik/Home/Index")); case "Korisnik": return(Redirect("/Korisnik/Home/Index")); default: return(Redirect("/Home/Index")); } } else { TempData["error_message"] = ErrorParser.Parse(response.Error.Content); return(View(nameof(Index), model)); } }