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)
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<Object> {
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) {

View File

@ -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"
}
}

View File

@ -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,
});
}
}