//return valid token for api public static string CheckToken(LoginModel loginModel) { var TokenString = ""; //if token is null try to get a new one if (ClientToken == null) { PrinterClass.printErrorMessage("token is empty, get a new one: " + ClientToken); TokenString = GetNewToken(loginModel.LoginEmail, loginModel.LoginPassword); } //token not null, check if expired else if (ClientToken != null) { var WebToken = new JwtSecurityToken(ClientToken); var ExpirationTime = WebToken.ValidTo; var CreatedTime = WebToken.ValidFrom; var CurrentTime = new DateTime(); if (CurrentTime.IsBetween(CreatedTime, ExpirationTime)) { PrinterClass.printDebugMessage("the token is still valid : " + WebToken); TokenString = ClientToken; } else { PrinterClass.printErrorMessage("this token has expired"); TokenString = GetNewToken(loginModel.LoginEmail, loginModel.LoginPassword); } } PrinterClass.printDebugMessage("returning token value: " + TokenString); return(TokenString); }
//get token from api private static string GetNewToken(string email, string password) { var TokenResponse = ""; //setup rest request RestRequest AuthRequest = new RestRequest("/authentication", Method.POST); AuthRequest.AddParameter("email", email); AuthRequest.AddParameter("password", password); AuthRequest.AddParameter("strategy", "local"); AuthRequest.RequestFormat = DataFormat.Json; //get response var AuthResponse = RestClient.Execute <TokenResponse>(AuthRequest); //check response var StatusCode = AuthResponse.StatusCode; //return generic error if (StatusCode == UnauthorizedCode) { TokenResponse = "error"; } else if (StatusCode == CreatedCode) { //get token from response string content = AuthResponse.Data.AccessToken; ClientToken = content; TokenResponse = content; //add token RestClient.Authenticator = new JwtAuthenticator(ClientToken); PrinterClass.printDebugMessage("new token created and saved: " + ClientToken); } return(TokenResponse); }
//register new user public static bool RegisterNewUser(RegisterModel registerModel) { //setup the request RestRequest CreateUserRequest = new RestRequest("/users", Method.POST) { RequestFormat = DataFormat.Json }; CreateUserRequest.AddParameter("email", registerModel.UserEmail); CreateUserRequest.AddParameter("password", registerModel.UserPassword); //get response var Response = RestClient.Execute(CreateUserRequest); //check response status code var StatusCode = Response.StatusCode; PrinterClass.printDebugMessage("staus code = " + StatusCode); if (StatusCode == CreatedCode) { //new user created, add user to person table as well RestRequest CreatePersonRequest = new RestRequest("/person", Method.POST); CreatePersonRequest.AddParameter("firstName", registerModel.FirstName); CreatePersonRequest.AddParameter("lastName", registerModel.LastName); CreatePersonRequest.AddParameter("email", registerModel.UserEmail); //set token string token = GetNewToken(registerModel.UserEmail, registerModel.UserPassword); RestClient.Authenticator = new JwtAuthenticator(token); //get response var PersonResponse = RestClient.Execute(CreatePersonRequest); //check response code var PersonStatusCode = PersonResponse.StatusCode; if (PersonStatusCode == CreatedCode) { //person has been added to database, send result return(true); } else { return(false); } } else if (StatusCode == InternalErrorCode) { //error adding new user return(false); } return(false); }