From 8ebe93523efdd2ff0e60e8efe3d4af691fd7f768 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Sat, 28 Dec 2019 14:01:10 +0100 Subject: [PATCH] Start to give advanced info about users --- src/controllers/UserController.ts | 25 ++++++++++++++++----- src/entities/User.ts | 37 ++++++++++++++++++++++++------- src/helpers/UserHelper.ts | 7 +++++- 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/src/controllers/UserController.ts b/src/controllers/UserController.ts index d9278d9..b0544f5 100644 --- a/src/controllers/UserController.ts +++ b/src/controllers/UserController.ts @@ -21,7 +21,7 @@ export class UserController { if(!user) handler.error(404, "Could not get user data!"); - handler.send(this.UserToAPI(user, handler)); + handler.send(await this.UserToAPI(user, handler)); } /** @@ -41,7 +41,7 @@ export class UserController { if(!user) handler.error(404, "One user was not found!"); - list[id] = this.UserToAPI(user, handler); + list[id] = await this.UserToAPI(user, handler); } handler.send(list); @@ -58,12 +58,15 @@ export class UserController { if(!await UserHelper.CanSeeUserPage(h.optionnalUserID, userID)) h.error(401, "You are not allowed to access these information!"); - h.send("Go on"); + const user = await UserHelper.GetUserInfo(userID); + const result = this.UserToAPI(user, h, true); + + h.send(await result); } - private static UserToAPI(user : User, handler: RequestHandler) : Object { - return { + private static async UserToAPI(user : User, handler: RequestHandler, advanced: boolean = false) : Promise { + const info = { "userID": user.id, "firstName": user.firstName, "lastName": user.lastName, @@ -72,6 +75,18 @@ export class UserController { "virtualDirectory": user.virtualDirectory, "accountImage": this.GetAccountImageURL(user.accountImage, handler) }; + + if(advanced) { + info["friend_list_public"] = user.friendsListPublic; + info["personnalWebsite"] = user.hasWebsite ? user.personnalWebsite : ""; + info["publicNote"] = user.hasPublicNote ? user.publicNote : ""; + info["noCommentOnHisPage"] = user.blockComments; + info["allowPostFromFriendOnHisPage"] = user.allowPostsFromFriends; + info["account_creation_time"] = user.timeCreate; + + } + + return info; } private static GetAccountImageURL(image : AccountImage, handler: RequestHandler) { diff --git a/src/entities/User.ts b/src/entities/User.ts index c81cf61..c7ce788 100644 --- a/src/entities/User.ts +++ b/src/entities/User.ts @@ -20,9 +20,19 @@ export interface UserBuilder { virtualDirectory: string, pageStatus: UserPageStatus, accountImage: AccountImage, + friendsListPublic: boolean, + personnalWebsite ?: string, + publicNote ?: string, + blockComments : boolean, + allowPostsFromFriends: boolean, } -export class User { +export class User implements UserBuilder { + friendsListPublic: boolean; + personnalWebsite?: string; + publicNote?: string; + blockComments: boolean; + allowPostsFromFriends: boolean; id: number; firstName: string; lastName: string; @@ -32,13 +42,24 @@ export class User { accountImage: AccountImage; public constructor(info : UserBuilder) { - this.id = info.id; - this.firstName = info.firstName; - this.lastName = info.lastName; - this.timeCreate = info.timeCreate; - this.virtualDirectory = info.virtualDirectory; - this.pageStatus = info.pageStatus; - this.accountImage = info.accountImage; + for (const key in info) { + if (info.hasOwnProperty(key)) { + this[key] = info[key]; + } + } } + get hasWebsite() : boolean { + return this.personnalWebsite + && this.personnalWebsite != null + && this.personnalWebsite.length > 0 + && this.personnalWebsite != "null" + } + + get hasPublicNote() : boolean { + return this.publicNote + && this.publicNote != null + && this.publicNote.length > 0 + && this.publicNote != "null" + } } \ No newline at end of file diff --git a/src/helpers/UserHelper.ts b/src/helpers/UserHelper.ts index 1481a4c..6e4ba16 100644 --- a/src/helpers/UserHelper.ts +++ b/src/helpers/UserHelper.ts @@ -134,7 +134,12 @@ export class UserHelper { timeCreate: new Date(row.date_creation).getTime()/1000, virtualDirectory: row.sous_repertoire, pageStatus: row.pageouverte == 1 ? UserPageStatus.OPEN : (row.public == 1 ? UserPageStatus.PUBLIC : UserPageStatus.PRIVATE), - accountImage: await AccountImageHelper.Get(row.ID) + accountImage: await AccountImageHelper.Get(row.ID), + friendsListPublic: row.liste_amis_publique == 1, + personnalWebsite: row.site_web, + publicNote: row.public_note, + blockComments: row.bloquecommentaire == 1, + allowPostsFromFriends: row.autoriser_post_amis == 1, }); } } \ No newline at end of file