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:
@@ -18,14 +18,14 @@ export class ShareConfigService {
|
||||
shareCacheConfig = JSON.parse(shareCacheConfigString);
|
||||
} catch (e) {
|
||||
await redis.set(`config:share:${username}:${key}`, '', 'EX', 0); // 删除缓存
|
||||
throw new CustomError(400, 'config parse error');
|
||||
throw new CustomError(400, { message: 'config parse error' });
|
||||
}
|
||||
const owner = username;
|
||||
if (shareCacheConfig) {
|
||||
const permission = new UserPermission({ permission: (shareCacheConfig?.data as any)?.permission, owner });
|
||||
const result = permission.checkPermissionSuccess(options);
|
||||
if (!result.success) {
|
||||
throw new CustomError(403, 'no permission');
|
||||
throw new CustomError(403, { message: 'no permission' });
|
||||
}
|
||||
return shareCacheConfig;
|
||||
}
|
||||
@@ -35,7 +35,7 @@ export class ShareConfigService {
|
||||
.limit(1);
|
||||
const user = users[0];
|
||||
if (!user) {
|
||||
throw new CustomError(404, 'user not found');
|
||||
throw new CustomError(404, { message: 'user not found' });
|
||||
}
|
||||
const configs = await db.select()
|
||||
.from(schema.kvConfig)
|
||||
@@ -43,12 +43,12 @@ export class ShareConfigService {
|
||||
.limit(1);
|
||||
const config = configs[0];
|
||||
if (!config) {
|
||||
throw new CustomError(404, 'config not found');
|
||||
throw new CustomError(404, { message: 'config not found' });
|
||||
}
|
||||
const permission = new UserPermission({ permission: (config?.data as any)?.permission, owner });
|
||||
const result = permission.checkPermissionSuccess(options);
|
||||
if (!result.success) {
|
||||
throw new CustomError(403, 'no permission');
|
||||
throw new CustomError(403, { message: 'no permission' });
|
||||
}
|
||||
await redis.set(`config:share:${username}:${key}`, JSON.stringify(config), 'EX', 60 * 60 * 24 * 7); // 7天
|
||||
return config;
|
||||
|
||||
Reference in New Issue
Block a user