Add logout event to audit logs

This commit is contained in:
Rémi de Juvigny 2022-12-20 11:58:09 +01:00
parent d8ae7ad98b
commit 70e88d2891
4 changed files with 23 additions and 4 deletions

View File

@ -2,7 +2,7 @@ import React, { useRef, useState } from 'react';
import styled from 'styled-components';
import PropTypes from 'prop-types';
import { useIntl } from 'react-intl';
import { NavLink as RouterNavLink, useLocation } from 'react-router-dom';
import { NavLink as RouterNavLink, useLocation, useHistory } from 'react-router-dom';
import { Divider } from '@strapi/design-system/Divider';
import {
MainNav,
@ -20,7 +20,8 @@ import { Stack } from '@strapi/design-system/Stack';
import Write from '@strapi/icons/Write';
import Exit from '@strapi/icons/Exit';
import { auth, usePersistentState, useAppInfos, useTracking } from '@strapi/helper-plugin';
import useConfigurations from '../../hooks/useConfigurations';
import { useConfigurations } from '../../hooks';
import { axiosInstance } from '../../core/utils';
const LinkUserWrapper = styled(Box)`
width: ${150 / 16}rem;
@ -61,6 +62,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
const { formatMessage } = useIntl();
const { trackUsage } = useTracking();
const { pathname } = useLocation();
const history = useHistory();
const initials = userDisplayName
.split(' ')
@ -70,9 +72,11 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev);
const handleLogout = () => {
const handleLogout = async () => {
await axiosInstance.post('/admin/logout');
auth.clearAppStorage();
handleToggleUserLinks();
history.push('/auth/login');
};
const handleBlur = (e) => {
@ -205,7 +209,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
})}
</Typography>
</LinkUser>
<LinkUser tabIndex={0} onClick={handleLogout} logout="logout" to="/auth/login">
<LinkUser as="button" tabIndex={0} onClick={handleLogout} logout="logout">
<Typography textColor="danger600">
{formatMessage({
id: 'app.components.LeftMenu.logout',

View File

@ -13,6 +13,7 @@ const defaultEvents = [
'user.update',
'user.delete',
'admin.auth.success',
'admin.logout',
];
const getEventMap = (defaultEvents) => {

View File

@ -157,4 +157,10 @@ module.exports = {
},
};
},
logout(ctx) {
const sanitizedUser = getService('user').sanitizeUser(ctx.state.user);
strapi.eventHub.emit('admin.logout', { user: sanitizedUser });
ctx.body = { data: {} };
},
};

View File

@ -43,4 +43,12 @@ module.exports = [
handler: 'authentication.resetPassword',
config: { auth: false },
},
{
method: 'POST',
path: '/logout',
handler: 'authentication.logout',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
];