mirror of
				https://gitlab.com/comunic/comunicapiv2
				synced 2025-11-04 03:24:04 +00:00 
			
		
		
		
	Can set (update) general settings
This commit is contained in:
		@@ -82,7 +82,9 @@ export const Routes : Route[] = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Settings controller
 | 
						// Settings controller
 | 
				
			||||||
	{path: "/settings/get_general", cb: (h) => SettingsController.GetGeneral(h)},
 | 
						{path: "/settings/get_general", cb: (h) => SettingsController.GetGeneral(h)},
 | 
				
			||||||
	
 | 
					
 | 
				
			||||||
 | 
						{path: "/settings/set_general", cb: (h) => SettingsController.SetGeneral(h)},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Friends controller
 | 
						// Friends controller
 | 
				
			||||||
	{path: "/friends/getList", cb: (h) => FriendsController.GetList(h)},
 | 
						{path: "/friends/getList", cb: (h) => FriendsController.GetList(h)},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,11 @@
 | 
				
			|||||||
import { RequestHandler } from "../entities/RequestHandler";
 | 
					import { RequestHandler } from "../entities/RequestHandler";
 | 
				
			||||||
import { UserHelper } from "../helpers/UserHelper";
 | 
					import { UserHelper } from "../helpers/UserHelper";
 | 
				
			||||||
import { UserController } from "./UserController";
 | 
					import { UserController } from "./UserController";
 | 
				
			||||||
 | 
					import { GeneralSettings, User, UserPageStatus } from "../entities/User";
 | 
				
			||||||
 | 
					import { removeHTMLNodes, checkURL } from "../utils/StringUtils";
 | 
				
			||||||
 | 
					import { VirtualDirectoryController } from "./VirtualDirectoryController";
 | 
				
			||||||
 | 
					import { checkVirtualDirectoryAvailability, VirtualDirType } from "../utils/VirtualDirsUtils";
 | 
				
			||||||
 | 
					import { AccountHelper } from "../helpers/AccountHelper";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class SettingsController {
 | 
					export class SettingsController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,4 +41,51 @@ export class SettingsController {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Update (set) general account settings
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param h Request handler
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static async SetGeneral(h: RequestHandler) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Determine page status
 | 
				
			||||||
 | 
							const pageStatus = h.postBool("isPublic") ? (
 | 
				
			||||||
 | 
								h.postBool("isOpen") ? UserPageStatus.OPEN : UserPageStatus.PUBLIC
 | 
				
			||||||
 | 
							) : UserPageStatus.PRIVATE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Check personnal website
 | 
				
			||||||
 | 
							const personnalWebsite = h.postString("personnalWebsite", 0);
 | 
				
			||||||
 | 
							if(personnalWebsite.length > 0 && !checkURL(personnalWebsite))
 | 
				
			||||||
 | 
								h.error(401, "Invalid personnal website supplied!");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// Check virtual directory
 | 
				
			||||||
 | 
							let virtualDirectory = h.postString("virtualDirectory", 0);
 | 
				
			||||||
 | 
							if(virtualDirectory.length > 0) {
 | 
				
			||||||
 | 
								virtualDirectory = h.postVirtualDirectory("virtualDirectory");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!checkVirtualDirectoryAvailability(virtualDirectory, h.getUserId(), VirtualDirType.USER))
 | 
				
			||||||
 | 
									h.error(401, "The specified virtual directory is not available!");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Construct new settings object
 | 
				
			||||||
 | 
							const newSettings : GeneralSettings = {
 | 
				
			||||||
 | 
								id: h.getUserId(),
 | 
				
			||||||
 | 
								firstName: removeHTMLNodes(h.postString("firstName", 3)),
 | 
				
			||||||
 | 
								lastName: removeHTMLNodes(h.postString("lastName", 3)),
 | 
				
			||||||
 | 
								pageStatus: pageStatus,
 | 
				
			||||||
 | 
								blockComments: !h.postBool("allowComments"),
 | 
				
			||||||
 | 
								allowPostsFromFriends: h.postBool("allowPostsFromFriends"),
 | 
				
			||||||
 | 
								friendsListPublic: h.postBool("publicFriendsList"),
 | 
				
			||||||
 | 
								personnalWebsite: personnalWebsite,
 | 
				
			||||||
 | 
								virtualDirectory: virtualDirectory,
 | 
				
			||||||
 | 
								allowMails: h.postBool("allow_comunic_mails"),
 | 
				
			||||||
 | 
								publicNote: removeHTMLNodes(h.postString("publicNote", 0))
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							await AccountHelper.SetGeneral(newSettings);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							h.success();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -16,7 +16,6 @@ export enum UserPageStatus {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export interface UserInfo  {
 | 
					export interface UserInfo  {
 | 
				
			||||||
	id: number,
 | 
						id: number,
 | 
				
			||||||
	email: string;
 | 
					 | 
				
			||||||
	firstName: string,
 | 
						firstName: string,
 | 
				
			||||||
	lastName: string,
 | 
						lastName: string,
 | 
				
			||||||
	timeCreate: number,
 | 
						timeCreate: number,
 | 
				
			||||||
@@ -28,7 +27,21 @@ export interface UserInfo  {
 | 
				
			|||||||
	publicNote ?: string,
 | 
						publicNote ?: string,
 | 
				
			||||||
	blockComments : boolean,
 | 
						blockComments : boolean,
 | 
				
			||||||
	allowPostsFromFriends: boolean,
 | 
						allowPostsFromFriends: boolean,
 | 
				
			||||||
	allowMails: boolean
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface GeneralSettings {
 | 
				
			||||||
 | 
						id: number,
 | 
				
			||||||
 | 
						email ?: string,
 | 
				
			||||||
 | 
						firstName: string,
 | 
				
			||||||
 | 
						lastName: string,
 | 
				
			||||||
 | 
						pageStatus: UserPageStatus,
 | 
				
			||||||
 | 
						blockComments: boolean,
 | 
				
			||||||
 | 
						allowPostsFromFriends: boolean,
 | 
				
			||||||
 | 
						friendsListPublic: boolean,
 | 
				
			||||||
 | 
						personnalWebsite ?: string,
 | 
				
			||||||
 | 
						virtualDirectory: string,
 | 
				
			||||||
 | 
						allowMails: boolean,
 | 
				
			||||||
 | 
						publicNote ?: string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface SecuritySettings {
 | 
					export interface SecuritySettings {
 | 
				
			||||||
@@ -40,7 +53,7 @@ export interface SecuritySettings {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface UserBuilder extends UserInfo, SecuritySettings {
 | 
					export interface UserBuilder extends UserInfo, SecuritySettings, GeneralSettings {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -75,7 +88,7 @@ export class User implements UserBuilder {
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	get isPublic() : boolean {
 | 
						get isPublic() : boolean {
 | 
				
			||||||
		return this.pageStatus == UserPageStatus.PUBLIC;
 | 
							return this.pageStatus != UserPageStatus.PRIVATE;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	get isOpen() : boolean {
 | 
						get isOpen() : boolean {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ import { DatabaseHelper } from "./DatabaseHelper";
 | 
				
			|||||||
import { UserHelper } from "./UserHelper";
 | 
					import { UserHelper } from "./UserHelper";
 | 
				
			||||||
import { time, mysql_date } from "../utils/DateUtils";
 | 
					import { time, mysql_date } from "../utils/DateUtils";
 | 
				
			||||||
import { NewAccount } from "../entities/NewAccount";
 | 
					import { NewAccount } from "../entities/NewAccount";
 | 
				
			||||||
 | 
					import { GeneralSettings, UserPageStatus } from "../entities/User";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Account helper
 | 
					 * Account helper
 | 
				
			||||||
@@ -309,4 +310,31 @@ export class AccountHelper {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Set (save) new general settings
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param settings New settings
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static async SetGeneral(settings: GeneralSettings) {
 | 
				
			||||||
 | 
							await DatabaseHelper.UpdateRows({
 | 
				
			||||||
 | 
								table: USER_TABLE,
 | 
				
			||||||
 | 
								where: {
 | 
				
			||||||
 | 
									ID: settings.id
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								set: {
 | 
				
			||||||
 | 
									prenom: settings.firstName,
 | 
				
			||||||
 | 
									nom: settings.lastName,
 | 
				
			||||||
 | 
									public: settings.pageStatus != UserPageStatus.PRIVATE ? 1 : 0,
 | 
				
			||||||
 | 
									pageouverte: settings.pageStatus == UserPageStatus.OPEN ? 1 : 0,
 | 
				
			||||||
 | 
									bloquecommentaire: settings.blockComments ? 1 : 0,
 | 
				
			||||||
 | 
									autoriser_post_amis: settings.allowPostsFromFriends ? 1 : 0,
 | 
				
			||||||
 | 
									autorise_mail: settings.allowMails ? 1 : 0,
 | 
				
			||||||
 | 
									liste_amis_publique: settings.friendsListPublic ? 1 : 0,
 | 
				
			||||||
 | 
									sous_repertoire: settings.virtualDirectory,
 | 
				
			||||||
 | 
									site_web: settings.personnalWebsite,
 | 
				
			||||||
 | 
									public_note: settings.publicNote
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user