mirror of
				https://gitlab.com/comunic/comunicapiv2
				synced 2025-11-04 11:34:04 +00:00 
			
		
		
		
	Can change user password
This commit is contained in:
		@@ -152,10 +152,29 @@ export class AccountController {
 | 
			
		||||
	 * @param h Request handler
 | 
			
		||||
	 */
 | 
			
		||||
	public static async CheckPasswordResetToken(h: RequestHandler) {
 | 
			
		||||
		// We just get user ID to check the validity of the token
 | 
			
		||||
		await this.GetUserIDFromPasswordResetToken(h, "token");
 | 
			
		||||
		h.success("The token is valid.");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Reset user password
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param h Request handler
 | 
			
		||||
	 */
 | 
			
		||||
	public static async ResetUserPassword(h: RequestHandler) {
 | 
			
		||||
		const userID = await this.GetUserIDFromPasswordResetToken(h, "token");
 | 
			
		||||
		const newPassword = h.postString("password", 3);
 | 
			
		||||
 | 
			
		||||
		// Set new password
 | 
			
		||||
		await AccountHelper.ChangePassword(userID, newPassword);
 | 
			
		||||
 | 
			
		||||
		// Destroy reset token
 | 
			
		||||
		await AccountHelper.DestroyPasswordResetTokenForUser(userID);
 | 
			
		||||
 | 
			
		||||
		h.success("Password changed!");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get the user ID associated to a password reset token
 | 
			
		||||
	 * 
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,8 @@ export const Routes : Route[] = [
 | 
			
		||||
 | 
			
		||||
	{path: "/account/check_password_reset_token", cb: (h) => AccountController.CheckPasswordResetToken(h), needLogin: false},
 | 
			
		||||
 | 
			
		||||
	{path: "/account/reset_user_passwd", cb: (h) => AccountController.ResetUserPassword(h), needLogin: false},
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	// User controller
 | 
			
		||||
	{path: "/user/getInfo", cb: (h) => UserController.GetSingle(h), needLogin: false},
 | 
			
		||||
 
 | 
			
		||||
@@ -232,6 +232,24 @@ export class AccountHelper {
 | 
			
		||||
		return token;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Destroy password reset token for a given user
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param userID Target user ID
 | 
			
		||||
	 */
 | 
			
		||||
	public static async DestroyPasswordResetTokenForUser(userID: number) {
 | 
			
		||||
		await DatabaseHelper.UpdateRows({
 | 
			
		||||
			table: USER_TABLE,
 | 
			
		||||
			where: {
 | 
			
		||||
				ID: userID
 | 
			
		||||
			},
 | 
			
		||||
			set: {
 | 
			
		||||
				password_reset_token: "",
 | 
			
		||||
				password_reset_token_time_create: 85 // Value too low to be valid
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get the ID of a user from a password reset token
 | 
			
		||||
	 * 
 | 
			
		||||
@@ -254,6 +272,23 @@ export class AccountHelper {
 | 
			
		||||
			return -1;
 | 
			
		||||
 | 
			
		||||
		return result.ID;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Change the password of the user
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param userID Target user ID
 | 
			
		||||
	 * @param password Target password
 | 
			
		||||
	 */
 | 
			
		||||
	public static async ChangePassword(userID: number, password: string) {
 | 
			
		||||
		await DatabaseHelper.UpdateRows({
 | 
			
		||||
			table: USER_TABLE,
 | 
			
		||||
			where: {
 | 
			
		||||
				ID: userID
 | 
			
		||||
			},
 | 
			
		||||
			set: {
 | 
			
		||||
				password: this.CryptPassword(password)
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user