From 80aace7b72a54fbbeb6a3069d69e832f741cece8 Mon Sep 17 00:00:00 2001 From: Fabian Stamm Date: Mon, 10 Apr 2023 00:54:21 +0200 Subject: [PATCH] Add a nextcloud compatible response for profile. --- Backend/src/api/oauth/profile.ts | 61 ++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/Backend/src/api/oauth/profile.ts b/Backend/src/api/oauth/profile.ts index 3e0ea36..4c4c6ed 100644 --- a/Backend/src/api/oauth/profile.ts +++ b/Backend/src/api/oauth/profile.ts @@ -1,23 +1,38 @@ -import Mail from "../../models/mail"; -import { GetClientApiAuthMiddleware } from "../middlewares/client"; -import Stacker from "../middlewares/stacker"; -import { Request, Response } from "express"; - -export default Stacker(GetClientApiAuthMiddleware(), async (req: Request, res) => { - let mails = await Promise.all( - req.user.mails.map((id) => Mail.findById(id)) - ); - - let mail = mails.find((e) => e.primary) || mails[0]; - - res.json({ - user_id: req.user.uid, - id: req.user.uid, - ID: req.user.uid, - sub: req.user.uid, - email: mail.mail, - username: req.user.username, - displayName: req.user.name, - displayNameClaim: req.user.name, - }); -}) +import Mail from "../../models/mail"; +import { GetClientApiAuthMiddleware } from "../middlewares/client"; +import Stacker from "../middlewares/stacker"; +import { Request, Response } from "express"; +import Logging from "@hibas123/nodelogging"; + +export default Stacker(GetClientApiAuthMiddleware(), async (req: Request, res) => { + const mode = req.query.mode; + let mails = await Promise.all( + req.user.mails.map((id) => Mail.findById(id)) + ); + + let mail = mails.find((e) => e.primary) || mails[0]; + + let base_response = { + user_id: req.user.uid, + id: req.user.uid, + ID: req.user.uid, + sub: req.user.uid, + email: mail.mail, + username: req.user.username, + displayName: req.user.name, + displayNameClaim: req.user.name, + } + + if (mode == "nextcloud") { + Logging.debug("Profile in Nextcloud mode"); + base_response["ocs"] = { + data: { + id: base_response.user_id, + email: base_response.email, + "display-name": base_response.displayName, + } + } + } + + res.json(base_response); +}) diff --git a/package.json b/package.json index 3c404d6..7e84597 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hibas123/openauth", - "version": "1.2.0", + "version": "1.2.1", "author": "Fabian Stamm ", "private": true, "scripts": {