UserGetter = require "./UserGetter" logger = require("logger-sharelatex") UserDeleter = require("./UserDeleter") UserUpdater = require("./UserUpdater") sanitize = require('sanitizer') AuthenticationController = require('../Authentication/AuthenticationController') ObjectId = require("mongojs").ObjectId module.exports = UserController = getLoggedInUsersPersonalInfo: (req, res, next = (error) ->) -> user_id = AuthenticationController.getLoggedInUserId(req) logger.log user_id: user_id, "reciving request for getting logged in users personal info" return next(new Error("User is not logged in")) if !user_id? UserGetter.getUser user_id, { first_name: true, last_name: true, role:true, institution:true, email: true, signUpDate: true }, (error, user) -> return next(error) if error? UserController.sendFormattedPersonalInfo(user, res, next) getPersonalInfo: (req, res, next = (error) ->) -> {user_id} = req.params if user_id.match(/^\d+$/) query = { "overleaf.id": parseInt(user_id, 10) } else if user_id.match(/^[a-f0-9]{24}$/) query = { _id: ObjectId(user_id) } else return res.send(400) UserGetter.getUser query, { _id: true, first_name: true, last_name: true, email: true}, (error, user) -> logger.log user_id: req.params.user_id, "receiving request for getting users personal info" return next(error) if error? return res.send(404) if !user? UserController.sendFormattedPersonalInfo(user, res, next) sendFormattedPersonalInfo: (user, res, next = (error) ->) -> info = UserController.formatPersonalInfo(user) res.send JSON.stringify(info) formatPersonalInfo: (user, callback = (error, info) ->) -> if !user? return {} formatted_user = { id: user._id.toString() } for key in ["first_name", "last_name", "email", "signUpDate", "role", "institution"] if user[key]? formatted_user[key] = user[key] return formatted_user