// (C) 2007-2020 GoodData Corporation import { Application } from "express"; import { IMockProject } from "../../model/MockProject"; import * as HttpStatusCodes from "http-status-codes"; import { IUser, ISeparators } from "../../model/User"; import { IError } from "../../model/Error"; import { profileUri } from "../../route/routes"; export interface IAccountSetting { accountSetting: { authenticationModes: string[]; companyName: string; country?: string; created: string; effectiveIpWhitelist?: string; email: string; firstName: string; ipWhitelist?: string; language: string; lastName: string; separators: ISeparators; links: { self: string; }; login: string; phoneNumber?: string; position?: string; timezone?: string; updated?: string; }; } export function createAccountSettings(user: IUser): IAccountSetting { return { accountSetting: { companyName: user.companyName, firstName: user.firstName, lastName: user.lastName, phoneNumber: user.phoneNumber, login: user.email, separators: user.separators, email: user.email, authenticationModes: [], effectiveIpWhitelist: null, ipWhitelist: null, country: null, language: "en-US", position: null, timezone: null, links: { self: profileUri(user.identifier), }, created: "2014-07-01 15:16:05", updated: "2017-01-03 14:15:39", }, }; } export function createError(userId: string): IError { return { error: { parameters: [userId], component: "GDC::LWP::UserAgent", errorClass: "GDC::Exception::NotFound", message: "User uid %s doesn't exist.", }, }; } export const CURRENT_USER_PSEUDO_ID = "current"; export const profile = { register(app: Application, project: IMockProject) { app.get("/gdc/account/profile/:id", (req, res) => { const id = req.params.id; const user = id === CURRENT_USER_PSEUDO_ID ? project.users[0] : project.users.find(u => u.identifier === id); if (user) { res.status(HttpStatusCodes.OK).json(createAccountSettings(user)); } else { res.status(HttpStatusCodes.NOT_FOUND).json(createError(id)); } }); app.put("/gdc/account/profile/:id/settings", (req, res) => { const id = req.params.id; const user = id === CURRENT_USER_PSEUDO_ID ? project.users[0] : project.users.find(u => u.identifier === id); if (user) { res.status(HttpStatusCodes.NO_CONTENT).end(); } else { res.status(HttpStatusCodes.NOT_FOUND).json(createError(id)); } }); return app; }, };