feat: add CNB login functionality and user management
- Introduced `cnb-login` route to handle user login via CNB token. - Created `CnbServices` class for managing CNB user interactions. - Added `findByCnbId` method in the User model to retrieve users by CNB ID. - Updated error handling to provide more structured error messages. - Enhanced user creation logic to handle CNB users. - Added tests for the new CNB login functionality.
This commit is contained in:
@@ -35,15 +35,15 @@ app
|
||||
const tokenUser = ctx.state.tokenUser;
|
||||
const { id, username, password, description } = ctx.query.data || {};
|
||||
if (!id) {
|
||||
throw new CustomError(400, 'id is required');
|
||||
throw new CustomError(400, { message: 'id is required' });
|
||||
}
|
||||
const user = await User.findByPk(id);
|
||||
if (user.id !== tokenUser.id) {
|
||||
throw new CustomError(403, 'Permission denied');
|
||||
throw new CustomError(403, { message: 'Permission denied' });
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
throw new CustomError(500, 'user not found');
|
||||
throw new CustomError(500, { message: 'user not found' });
|
||||
}
|
||||
if (username) {
|
||||
user.username = username;
|
||||
@@ -73,12 +73,12 @@ app
|
||||
.define(async (ctx) => {
|
||||
const { username, password, description } = ctx.query.data || {};
|
||||
if (!username) {
|
||||
throw new CustomError(400, 'username is required');
|
||||
throw new CustomError(400, { message: 'username is required' });
|
||||
}
|
||||
checkUsername(username);
|
||||
const findUserByUsername = await User.findOne({ username });
|
||||
if (findUserByUsername) {
|
||||
throw new CustomError(400, 'username already exists');
|
||||
throw new CustomError(400, { message: 'username already exists' });
|
||||
}
|
||||
const pwd = password || nanoid(6);
|
||||
const user = await User.createUser(username, pwd, description);
|
||||
|
||||
Reference in New Issue
Block a user