diff --git a/package.json b/package.json index 491c5da..5907213 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "build-doc": "apidoc -i src/ -p apidoc/", "build-ts": "tsc", "build": "tsc && cd views && npm run build && cd ..", + "build-server":"tsc", "watch-ts": "tsc -w", "watch-views": "cd views && npm run watch", "watch-node": "nodemon --ignore ./views lib/index.js", diff --git a/src/api/middlewares/client.ts b/src/api/middlewares/client.ts index 8b50710..45d70dc 100644 --- a/src/api/middlewares/client.ts +++ b/src/api/middlewares/client.ts @@ -11,6 +11,17 @@ export function GetClientAuthMiddleware(checksecret = true, internal = false, ch try { let client_id = req.query.client_id || req.body.client_id; let client_secret = req.query.client_secret || req.body.client_secret; + + if(!client_id && !client_secret && req.headers.authorization) { + let header = req.headers.authorization; + let [type, val] = header.split(" "); + if(val) { + let str = Buffer.from(val, "base64").toString("utf-8"); + let [id, secret] = str.split(":"); + client_id = id; + client_secret = secret; + } + } if (!client_id || (!client_secret && checksecret)) { throw new RequestError("No client credentials", HttpStatusCode.BAD_REQUEST); diff --git a/src/api/oauth/auth.ts b/src/api/oauth/auth.ts index c76fb9f..dbcce8d 100644 --- a/src/api/oauth/auth.ts +++ b/src/api/oauth/auth.ts @@ -46,7 +46,7 @@ const AuthRoute = Stacker(GetUserMiddleware(true), async (req: Request, res: Res let permissions: IPermission[] = []; if (scope) { - let perms = (scope).split(";").map(p => new ObjectID(p)); + let perms = (scope).split(";").filter(e => e !== "read_user").map(p => new ObjectID(p)); permissions = await Permission.find({ _id: { $in: perms } }) if (permissions.length != perms.length) { diff --git a/src/views/views.ts b/src/views/views.ts index fa18aab..6a31114 100644 --- a/src/views/views.ts +++ b/src/views/views.ts @@ -13,7 +13,7 @@ import Client from "../models/client"; import { Logging } from "@hibas123/nodelogging"; import Stacker from "../api/middlewares/stacker"; import { UserMiddleware, GetUserMiddleware } from "../api/middlewares/user"; -import GetUserPage from "./user"; +// import GetUserPage from "./user"; Handlebars.registerHelper("appname", () => config.core.name); @@ -59,7 +59,7 @@ ViewRouter.get("/auth", Stacker(GetUserMiddleware(false, true), async (req, res) let permissions: IPermission[] = []; let proms: PromiseLike[] = []; if (scope) { - for (let perm of scope.split(";")) { + for (let perm of scope.split(";").filter(e => e !== "read_user")) { proms.push(Permission.findById(perm).then(p => { if (!p) return Promise.reject(new Error()); permissions.push(p);