public async Task <IHttpActionResult> GetAccessTokenByUserName(GetAccessTokenByUserNameInput input)
        {
            RestHTTP http = new RestHTTP();

            RestSharp.RestRequest req = new RestSharp.RestRequest("/oauth/token", RestSharp.Method.POST);
            input.grant_type = "password";
            req.AddObject(input);

            GetAccessTokenByUserNameOutput output = http.HttpPost <GetAccessTokenByUserNameOutput>(req);

            if (output != null && !string.IsNullOrEmpty(output.AccessToken))
            {
                var user = await this.AppUserManager.FindByNameAsync(input.username);

                if (user != null)
                {
                    output.CurrentUserID     = user.Id;
                    output.TwoFactorAuthFlag = user.TwoFactorEnabled;
                    UserReturnModel userSession = this.TheModelFactory.Create(user);
                    output.UserSession = new UserReturnModel();
                    output.UserSession = userSession;
                }
            }

            return(Ok(output));
        }
        public async Task <IHttpActionResult> GetUserSessionByAccessToken(GetUserSessionByAccessTokenInput input)
        {
            GetAccessTokenByUserNameOutput output = new GetAccessTokenByUserNameOutput();
            var user = await this.AppUserManager.FindByNameAsync(input.Username);

            if (user != null)
            {
                output.CurrentUserID = user.Id;
                UserReturnModel userSession = this.TheModelFactory.Create(user);
                output.UserSession = new UserReturnModel();
                output.UserSession = userSession;
            }

            return(Ok(output));
        }