public async Task <IActionResult> Login([FromBody] LoginModel model) { try { var validator = new LoginModelValidator(); if (model == null || !validator.Validate(model)) { return(BadRequest()); } var user = await userService.GetWhere(new { Email = model.Email }); if (user == null) { return(NotFound()); } if (!BCrypt.Net.BCrypt.Verify(model.Password, user.Password)) { return(Unauthorized()); } if (user.DeactivatedOn != null) { return(Forbid()); } var tokenManager = new JwtManager(config, user.Email, user.Id.ToString(CultureInfo.InvariantCulture)); if (user.Staff) { tokenManager.Claim(ClaimTypes.Role, "Staff"); } tokenManager.Build(); user.Email = null; user.Password = null; return(Ok(new { Token = tokenManager.Token.Value, TokenValidTo = tokenManager.Token.ValidTo, User = user })); } catch (Exception e) { logger.LogError(e, e.Message); return(StatusCode(500)); } }