strapi/packages/core/admin/server/controllers/authenticated-user.js
2021-11-04 11:41:29 +01:00

53 lines
1.3 KiB
JavaScript

'use strict';
const { validateProfileUpdateInput } = require('../validation/user');
const { getService } = require('../utils');
module.exports = {
async getMe(ctx) {
const userInfo = getService('user').sanitizeUser(ctx.state.user);
ctx.body = {
data: userInfo,
};
},
async updateMe(ctx) {
const input = ctx.request.body;
await validateProfileUpdateInput(input);
const userService = getService('user');
const authServer = getService('auth');
const { currentPassword, ...userInfo } = input;
if (currentPassword && userInfo.password) {
const isValid = await authServer.validatePassword(currentPassword, ctx.state.user.password);
if (!isValid) {
return ctx.badRequest('ValidationError', {
currentPassword: ['Invalid credentials'],
});
}
}
const updatedUser = await userService.updateById(ctx.state.user.id, userInfo);
ctx.body = {
data: userService.sanitizeUser(updatedUser),
};
},
async getOwnPermissions(ctx) {
const { findUserPermissions, sanitizePermission } = getService('permission');
const { user } = ctx.state;
const userPermissions = await findUserPermissions(user);
ctx.body = {
data: userPermissions.map(sanitizePermission),
};
},
};