1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-22 13:29:22 +00:00

Start to give advanced info about users

This commit is contained in:
Pierre HUBERT 2019-12-28 14:01:10 +01:00
parent b756ff42bb
commit 8ebe93523e
3 changed files with 55 additions and 14 deletions

View File

@ -21,7 +21,7 @@ export class UserController {
if(!user) if(!user)
handler.error(404, "Could not get user data!"); 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) if(!user)
handler.error(404, "One user was not found!"); handler.error(404, "One user was not found!");
list[id] = this.UserToAPI(user, handler); list[id] = await this.UserToAPI(user, handler);
} }
handler.send(list); handler.send(list);
@ -58,12 +58,15 @@ export class UserController {
if(!await UserHelper.CanSeeUserPage(h.optionnalUserID, userID)) if(!await UserHelper.CanSeeUserPage(h.optionnalUserID, userID))
h.error(401, "You are not allowed to access these information!"); 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 { private static async UserToAPI(user : User, handler: RequestHandler, advanced: boolean = false) : Promise<Object> {
return { const info = {
"userID": user.id, "userID": user.id,
"firstName": user.firstName, "firstName": user.firstName,
"lastName": user.lastName, "lastName": user.lastName,
@ -72,6 +75,18 @@ export class UserController {
"virtualDirectory": user.virtualDirectory, "virtualDirectory": user.virtualDirectory,
"accountImage": this.GetAccountImageURL(user.accountImage, handler) "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) { private static GetAccountImageURL(image : AccountImage, handler: RequestHandler) {

View File

@ -20,9 +20,19 @@ export interface UserBuilder {
virtualDirectory: string, virtualDirectory: string,
pageStatus: UserPageStatus, pageStatus: UserPageStatus,
accountImage: AccountImage, 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; id: number;
firstName: string; firstName: string;
lastName: string; lastName: string;
@ -32,13 +42,24 @@ export class User {
accountImage: AccountImage; accountImage: AccountImage;
public constructor(info : UserBuilder) { public constructor(info : UserBuilder) {
this.id = info.id; for (const key in info) {
this.firstName = info.firstName; if (info.hasOwnProperty(key)) {
this.lastName = info.lastName; this[key] = info[key];
this.timeCreate = info.timeCreate; }
this.virtualDirectory = info.virtualDirectory; }
this.pageStatus = info.pageStatus;
this.accountImage = info.accountImage;
} }
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"
}
} }

View File

@ -134,7 +134,12 @@ export class UserHelper {
timeCreate: new Date(row.date_creation).getTime()/1000, timeCreate: new Date(row.date_creation).getTime()/1000,
virtualDirectory: row.sous_repertoire, virtualDirectory: row.sous_repertoire,
pageStatus: row.pageouverte == 1 ? UserPageStatus.OPEN : (row.public == 1 ? UserPageStatus.PUBLIC : UserPageStatus.PRIVATE), 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,
}); });
} }
} }