public async Task <IHttpActionResult> RegisterUser(UserAccountInputModel model) { if (model == null) { return(this.BadRequest("Invalid user data")); } if (!ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } var user = new User { UserName = model.Username }; var identityResult = await this.UserManager.CreateAsync(user, model.Password); if (!identityResult.Succeeded) { return(this.GetErrorResult(identityResult)); } // Auto login after registrаtion (successful user registration should return access_token) var loginResult = await this.LoginUser(new UserAccountInputModel() { Username = model.Username, Password = model.Password }); return(loginResult); }
public async Task <IHttpActionResult> LoginUser(UserAccountInputModel model) { if (model == null) { return(this.BadRequest("Invalid user data")); } // Invoke the "token" OWIN service to perform the login (POST /api/token) var testServer = TestServer.Create <Startup>(); var requestParams = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("grant_type", "password"), new KeyValuePair <string, string>("username", model.Username), new KeyValuePair <string, string>("password", model.Password) }; var requestParamsFormUrlEncoded = new FormUrlEncodedContent(requestParams); var tokenServiceResponse = await testServer.HttpClient.PostAsync( Startup.TokenEndpointPath, requestParamsFormUrlEncoded); return(this.ResponseMessage(tokenServiceResponse)); }