mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Continue developing service token v2
This commit is contained in:
@@ -8,8 +8,8 @@ type req = 'params' | 'body' | 'query';
|
||||
* Validate if user on request is a member with proper roles for workspace
|
||||
* on request params.
|
||||
* @param {Object} obj
|
||||
* @param {String[]} obj.acceptedRoles - accepted workspace roles
|
||||
* @param {String[]} obj.acceptedStatuses - accepted workspace statuses
|
||||
* @param {String[]} obj.acceptedRoles - accepted workspace roles for JWT auth
|
||||
* @param {String[]} obj.acceptedStatuses - accepted workspace statuses for JWT auth
|
||||
* @param {String[]} obj.location - location of [workspaceId] on request (e.g. params, body) for parsing
|
||||
*/
|
||||
const requireWorkspaceAuth = ({
|
||||
@@ -22,17 +22,28 @@ const requireWorkspaceAuth = ({
|
||||
location?: req;
|
||||
}) => {
|
||||
return async (req: Request, res: Response, next: NextFunction) => {
|
||||
// workspace authorization middleware
|
||||
|
||||
try {
|
||||
const membership = await validateMembership({
|
||||
userId: req.user._id.toString(),
|
||||
workspaceId: req[location].workspaceId,
|
||||
acceptedRoles,
|
||||
acceptedStatuses
|
||||
});
|
||||
const { workspaceId } = req[location];
|
||||
|
||||
req.membership = membership;
|
||||
if (req.user) {
|
||||
// case: jwt auth
|
||||
const membership = await validateMembership({
|
||||
userId: req.user._id.toString(),
|
||||
workspaceId,
|
||||
acceptedRoles,
|
||||
acceptedStatuses
|
||||
});
|
||||
|
||||
req.membership = membership;
|
||||
}
|
||||
|
||||
if (
|
||||
req.serviceTokenData
|
||||
&& req.serviceTokenData.workspace !== workspaceId
|
||||
&& req.serviceTokenData.environment !== req.body.environment
|
||||
)
|
||||
// case: st auth
|
||||
next(UnauthorizedRequestError({message: 'Unable to authenticate workspace'}))
|
||||
|
||||
return next();
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user