Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Updates the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        public void Update(T record)
        {
            var entity = CreateEntityWithEtag(record);

            _tableStore.Update(entity);
        }