Files
wmantly 5dcc75195c fix: complete ORM port — token/oauth-client API mismatches, use published orm 0.2.8
- Use published @simpleworkjs/orm ^0.2.8 (fixes redis adapter write path)
  and model-redis ^1.6.0 instead of a local file: link that broke docker
  npm ci with a misleading "no lockfile" error.
- OtpToken.issue/verify: replace nonexistent find()/listDetail() with
  list({where}).
- routes/auth.js: ImpersonationToken.listDetail() -> list({where}).
- routes/token.js: drop listDetail() call; 404 on missing token instead
  of returning {results: null} with 200 (orm get() returns null, does
  not throw like model-redis Table.get did).
- OAuthClient: Resource has no is_valid column, so every client read as
  disabled and all /oauth/authorize requests 400'd — validity now lives
  in metadata (absent = valid). Also generate a unique slug on create
  (Resource.slug is required+unique) and use Resource.get() for lookup.
- User.login: 401 cleanly when neither uid nor username is supplied.
- models/index.js: log ORM init and surface init failures.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 02:20:49 -04:00

79 lines
1.7 KiB
JavaScript

'use strict';
const router = require('express').Router();
const {AuthToken} = require('../models/auth');
var tokens = require('../models/token');
// const {Token, InviteToken, PasswordResetToken} = require('../models/token');
delete tokens.Token;
// const tokens = {
// auth: AuthToken,
// invite: InviteToken,
// password: PasswordResetToken,
// }
router.get('/', async function(req, res, next){
try{
return res.json({results: Object.keys(tokens)})
}catch(error){
throw(error);
}
});
router.get('/:name', async function(req, res, next){
try{
// ORM models: list() on the redis adapter always returns full rows;
// detail is handled by serialization (isPrivate fields are excluded).
return res.json({
results: await tokens[req.params.name].list()
});
}catch(error){
next(error);
}
});
router.get('/:name/:token', async function(req, res, next){
try{
const result = await tokens[req.params.name].get(req.params.token);
if (!result) {
const error = new Error('Token not found');
error.status = 404;
throw error;
}
return res.json({ results: result });
}catch(error){
next(error);
}
});
// router.delete('/:username', async function(req, res, next){
// try{
// let user = await User.get(req.params.username);
// return res.json({username: req.params.username, results: await user.remove()})
// }catch(error){
// next(error);
// }
// });
module.exports = router;
/*
verify public ssh key
*/
// router.post('/verifykey', async function(req, res){
// let key = req.body.key;
// try{
// return res.json({
// info: await Users.verifyKey(key)
// });
// }catch(error){
// return res.status(400).json({
// message: 'Key is not a public key file!'
// });
// }
// });