public IActionResult Register([FromForm] RegisterUserModel userRegisterModel)
        {
            if (!ModelState.IsValid ||
                !ValidateRegisterUser(userRegisterModel))
            {
                return(BadRequest());
            }

            User registerUser = userRegisterModel.User;

            if (ProcessRegisterUserModelData(registerUser))
            {
                _repositoryWrapper.Account.Add(registerUser);
                _repositoryWrapper.Save();

                TokenProvider tokenProvider   = new TokenProvider();
                string        userTokenString = tokenProvider.CreateUserTokenString(registerUser);

                if (userTokenString != null &&
                    userTokenString.Length > 0)
                {
                    HttpContext.Session.SetString(TokenProvider.GetTokenSessionKeyString(), userTokenString);
                }
            }

            return(Ok());
        }
        public async Task <IActionResult> Login([FromForm] LoginUserModel userLoginModel)
        {
            if (!ModelState.IsValid ||
                !ValidateLoginUser(userLoginModel))
            {
                return(BadRequest());
            }

            User   loginUser             = userLoginModel.User;
            User   loggedUser            = null;
            string userSessionDataString = string.Empty;

            if (ProcessLoginUserModelData(loginUser))
            {
                loggedUser = await _repositoryWrapper.Account.Authenticate(loginUser.NickName, loginUser.Password);

                if (loggedUser == null)
                {
                    return(BadRequest(new { message = "Username or password is incorrect" }));
                }
                else
                {
                    if (_repositoryWrapper.Account.UpdateLoggedUserData(loggedUser))
                    {
                        _repositoryWrapper.Save();
                        loggedUser.Password = string.Empty;
                    }

                    TokenProvider tokenProvider   = new TokenProvider();
                    string        userTokenString = tokenProvider.CreateUserTokenString(loggedUser);

                    if (userTokenString != null &&
                        userTokenString.Length > 0)
                    {
                        HttpContext.Session.SetString(TokenProvider.GetTokenSessionKeyString(), userTokenString);
                        return(Ok(loggedUser));
                    }
                }
            }

            return(BadRequest());
        }