Example #1
0
        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));
            }
        }