|
|
const { User } = require("../../../models/user"); |
|
|
const { TemporaryAuthToken } = require("../../../models/temporaryAuthToken"); |
|
|
const { multiUserMode } = require("../../../utils/http"); |
|
|
const { |
|
|
simpleSSOEnabled, |
|
|
} = require("../../../utils/middleware/simpleSSOEnabled"); |
|
|
const { validApiKey } = require("../../../utils/middleware/validApiKey"); |
|
|
|
|
|
function apiUserManagementEndpoints(app) { |
|
|
if (!app) return; |
|
|
|
|
|
app.get("/v1/users", [validApiKey], async (request, response) => { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
if (!multiUserMode(response)) |
|
|
return response |
|
|
.status(401) |
|
|
.send("Instance is not in Multi-User mode. Permission denied."); |
|
|
|
|
|
const users = await User.where(); |
|
|
const filteredUsers = users.map((user) => ({ |
|
|
id: user.id, |
|
|
username: user.username, |
|
|
role: user.role, |
|
|
})); |
|
|
response.status(200).json({ users: filteredUsers }); |
|
|
} catch (e) { |
|
|
console.error(e.message, e); |
|
|
response.sendStatus(500).end(); |
|
|
} |
|
|
}); |
|
|
|
|
|
app.get( |
|
|
"/v1/users/:id/issue-auth-token", |
|
|
[validApiKey, simpleSSOEnabled], |
|
|
async (request, response) => { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
const { id: userId } = request.params; |
|
|
const user = await User.get({ id: Number(userId) }); |
|
|
if (!user) |
|
|
return response.status(404).json({ error: "User not found" }); |
|
|
|
|
|
const { token, error } = await TemporaryAuthToken.issue(userId); |
|
|
if (error) return response.status(500).json({ error: error }); |
|
|
|
|
|
response.status(200).json({ |
|
|
token: String(token), |
|
|
loginPath: `/sso/simple?token=${token}`, |
|
|
}); |
|
|
} catch (e) { |
|
|
console.error(e.message, e); |
|
|
response.sendStatus(500).end(); |
|
|
} |
|
|
} |
|
|
); |
|
|
} |
|
|
|
|
|
module.exports = { apiUserManagementEndpoints }; |
|
|
|