public CreateUserResponse ResetPassword([FromBody] ResetPasswordRequest pwResetRequest) { CreateUserResponse response = new CreateUserResponse(); if (string.IsNullOrEmpty(pwResetRequest.User.Email) || string.IsNullOrEmpty(pwResetRequest.User.Password) || string.IsNullOrEmpty(pwResetRequest.Token)) { response.Error = "Missing necessary data"; } User user = pwResetRequest.User; using (RequestTracker request = new RequestTracker(Constant.RequestAPI.ResetPW.ToString(), user.Email)) { try { user.Init(); if (string.IsNullOrEmpty(user.Password) || user.Password.Length < 8) { request.response = RequestTracker.RequestResponse.UserError; response.Error = "Password must be at least 8 characters"; return(response); } User retrievedUser; TableStore.Get <User>(TableStore.TableName.users, user.PartitionKey, user.Email, out retrievedUser); if (retrievedUser == null) { request.response = RequestTracker.RequestResponse.UserError; response.Error = "Invalid user"; return(response); } // Confirm token if (retrievedUser.PWResetTokenWithExpiry == null || retrievedUser.PWResetTokenWithExpiry.Item1 != pwResetRequest.Token || DateTime.Compare(DateTime.UtcNow, retrievedUser.PWResetTokenWithExpiry.Item2) > 0) { request.response = RequestTracker.RequestResponse.UserError; response.Error = "Invalid or expired token"; return(response); } retrievedUser.Password = user.Password; retrievedUser.EncryptPassword(); retrievedUser.PWResetTokenWithExpiry = null; retrievedUser.ClearAuthTokens(); string token = retrievedUser.GetAuthToken(); TableStore.Update(TableStore.TableName.users, retrievedUser); response.Token = token; response.Error = "Success"; return(response); } catch (Exception e) { request.response = RequestTracker.RequestResponse.ServerError; ExceptionTracker.LogException(e); response.Error = "Oops, something went wrong. Initiating developer punishment."; return(response); } } }
public static void SetLastUpdate(string userId) { LastUpdate lastUpdate = new LastUpdate(); lastUpdate.LastUpdateTime = DateTime.UtcNow; lastUpdate.RowKey = userId; lastUpdate.PartitionKey = userId; TableStore.Update(TableStore.TableName.lastUpdate, lastUpdate); }
/// <summary> /// Updates the specified record. /// </summary> /// <param name="record">The record.</param> public void Update(T record) { var entity = CreateEntityWithEtag(record); _tableStore.Update(entity); }