mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-27 00:19:39 +01:00
fix: flag for anonymising user search
This commit is contained in:
parent
6a857f01a4
commit
ddb7b075a8
@ -11,8 +11,9 @@ import { IUnleashServices } from '../../types/services';
|
|||||||
import SessionService from '../../services/session-service';
|
import SessionService from '../../services/session-service';
|
||||||
import { IAuthRequest } from '../unleash-types';
|
import { IAuthRequest } from '../unleash-types';
|
||||||
import SettingService from '../../services/setting-service';
|
import SettingService from '../../services/setting-service';
|
||||||
import { SimpleAuthSettings } from '../../server-impl';
|
import { IUser, SimpleAuthSettings } from '../../server-impl';
|
||||||
import { simpleAuthKey } from '../../types/settings/simple-auth-settings';
|
import { simpleAuthKey } from '../../types/settings/simple-auth-settings';
|
||||||
|
import { anonymise } from '../../util/anonymise';
|
||||||
|
|
||||||
interface ICreateUserBody {
|
interface ICreateUserBody {
|
||||||
username: string;
|
username: string;
|
||||||
@ -23,6 +24,8 @@ interface ICreateUserBody {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default class UserAdminController extends Controller {
|
export default class UserAdminController extends Controller {
|
||||||
|
private anonymise: boolean = false;
|
||||||
|
|
||||||
private userService: UserService;
|
private userService: UserService;
|
||||||
|
|
||||||
private accessService: AccessService;
|
private accessService: AccessService;
|
||||||
@ -67,6 +70,7 @@ export default class UserAdminController extends Controller {
|
|||||||
this.settingService = settingService;
|
this.settingService = settingService;
|
||||||
this.logger = config.getLogger('routes/user-controller.ts');
|
this.logger = config.getLogger('routes/user-controller.ts');
|
||||||
this.unleashUrl = config.server.unleashUrl;
|
this.unleashUrl = config.server.unleashUrl;
|
||||||
|
this.anonymise = config.experimental?.anonymiseEventLog;
|
||||||
|
|
||||||
this.get('/', this.getUsers, ADMIN);
|
this.get('/', this.getUsers, ADMIN);
|
||||||
this.get('/search', this.search);
|
this.get('/search', this.search);
|
||||||
@ -106,11 +110,24 @@ export default class UserAdminController extends Controller {
|
|||||||
res.json(sessions);
|
res.json(sessions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
anonymiseUsers(users: IUser[]): IUser[] {
|
||||||
|
return users.map((u) => ({
|
||||||
|
...u,
|
||||||
|
email: anonymise(u.email || 'random'),
|
||||||
|
imageUrl:
|
||||||
|
'https://gravatar.com/avatar/21232f297a57a5a743894a0e4a801fc3?size=42&default=retro',
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
async search(req: Request, res: Response): Promise<void> {
|
async search(req: Request, res: Response): Promise<void> {
|
||||||
const { q } = req.query as any;
|
const { q } = req.query as any;
|
||||||
try {
|
try {
|
||||||
const users =
|
let users =
|
||||||
q && q.length > 1 ? await this.userService.search(q) : [];
|
q && q.length > 1 ? await this.userService.search(q) : [];
|
||||||
|
|
||||||
|
if (this.anonymise) {
|
||||||
|
users = this.anonymiseUsers(users);
|
||||||
|
}
|
||||||
res.json(users);
|
res.json(users);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logger.error(error);
|
this.logger.error(error);
|
||||||
|
Loading…
Reference in New Issue
Block a user