feat: logout
This commit is contained in:
parent
3d0cc13cc2
commit
c6d1af73dd
|
|
@ -172,4 +172,39 @@ export class UsersController {
|
|||
|
||||
response.status(200).send();
|
||||
}
|
||||
|
||||
@Post('/logout')
|
||||
logout(@Res({ passthrough: true }) response: Response) {
|
||||
response.cookie('auth', '', {
|
||||
domain:
|
||||
'.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
|
||||
secure: true,
|
||||
httpOnly: true,
|
||||
maxAge: -1,
|
||||
expires: new Date(0),
|
||||
sameSite: 'none',
|
||||
});
|
||||
|
||||
response.cookie('showorg', '', {
|
||||
domain:
|
||||
'.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
|
||||
secure: true,
|
||||
httpOnly: true,
|
||||
maxAge: -1,
|
||||
expires: new Date(0),
|
||||
sameSite: 'none',
|
||||
});
|
||||
|
||||
response.cookie('impersonate', '', {
|
||||
domain:
|
||||
'.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
|
||||
secure: true,
|
||||
httpOnly: true,
|
||||
maxAge: -1,
|
||||
expires: new Date(0),
|
||||
sameSite: 'none',
|
||||
});
|
||||
|
||||
response.status(200).send();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
import { isGeneral } from '@gitroom/react/helpers/is.general';
|
||||
import { useCallback } from 'react';
|
||||
import { deleteDialog } from '@gitroom/react/helpers/delete.dialog';
|
||||
import { useFetch } from '@gitroom/helpers/utils/custom.fetch';
|
||||
|
||||
export const LogoutComponent = () => {
|
||||
const fetch = useFetch();
|
||||
const logout = useCallback(async () => {
|
||||
if (await deleteDialog('Are you sure you want to logout?', 'Yes logout')) {
|
||||
await fetch('/user/logout', {
|
||||
method: 'POST',
|
||||
});
|
||||
|
||||
window.location.href = '/';
|
||||
}
|
||||
}, []);
|
||||
|
||||
return <div className="text-red-400 cursor-pointer" onClick={logout}>Logout from {isGeneral() ? 'Postiz' : 'Gitroom'}</div>;
|
||||
};
|
||||
|
|
@ -14,6 +14,7 @@ import clsx from 'clsx';
|
|||
import { TeamsComponent } from '@gitroom/frontend/components/settings/teams.component';
|
||||
import { isGeneral } from '@gitroom/react/helpers/is.general';
|
||||
import { useUser } from '@gitroom/frontend/components/layout/user.context';
|
||||
import { LogoutComponent } from '@gitroom/frontend/components/layout/logout.component';
|
||||
|
||||
export const SettingsPopup: FC<{ getRef?: Ref<any> }> = (props) => {
|
||||
const { getRef } = props;
|
||||
|
|
@ -187,6 +188,7 @@ export const SettingsPopup: FC<{ getRef?: Ref<any> }> = (props) => {
|
|||
</div>
|
||||
)}
|
||||
{!!user?.tier?.team_members && isGeneral() && <TeamsComponent />}
|
||||
<LogoutComponent />
|
||||
</div>
|
||||
</form>
|
||||
</FormProvider>
|
||||
|
|
|
|||
Loading…
Reference in New Issue