Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 1x | import {model} from '@feasibleone/blong';
/**
* accessSessionModel — browse view of the active sessions.
*
* Sessions are standalone rows (`access_session`) written on authentication
* and refreshed on token renewal. The "Close Session" toolbar button calls the
* custom `access.session.close` action to revoke the selected session.
*/
export default model(
() =>
async function accessSessionModel() {
return {
subject: 'access',
object: 'session',
objectTitle: 'Session',
public: true,
nameField: 'session.sessionId',
schema: {
properties: {
session: {
properties: {
sessionId: {
title: 'Session',
filter: true,
},
userId: {title: 'User'},
issuedAt: {
title: 'Issued',
widget: {type: 'dateTime'},
},
expiresAt: {
title: 'Expires',
widget: {type: 'dateTime'},
},
ipAddress: {title: 'IP'},
isRevoked: {
title: 'Revoked',
type: 'boolean',
},
},
widget: {
columns: [
'sessionId',
'userId',
'issuedAt',
'expiresAt',
'ipAddress',
'isRevoked',
],
},
},
},
},
cards: {
browse: {
label: 'Sessions',
widgets: ['session'],
},
},
browser: {
title: 'Sessions',
icon: 'pi pi-clock',
toolbar: [
{
label: 'Close Session',
icon: 'pi pi-times',
enabled: 'current',
confirm: 'Close this session?',
method: 'access.session.close',
params: '${current}',
refresh: true,
},
],
},
};
},
);
|