60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
/**
|
|
* Manage users — SRC Advisory webmail plugin.
|
|
*
|
|
* Adds a first-class "User management" entry to the Settings page. Users are
|
|
* the VNCdirectory's concern (the SRC directory), so this plugin is a thin
|
|
* deep-link: it explains where users live and opens the directory's user list
|
|
* in a new tab. It deliberately does NOT try to manage users itself.
|
|
*/
|
|
|
|
const host = require('@plugin-host');
|
|
const React = require('react');
|
|
const h = React.createElement;
|
|
|
|
const MANAGE_USERS_URL = 'https://vncdirectory.src-advisory.com/users';
|
|
|
|
const card = {
|
|
border: '1px solid var(--color-border, #e2e8f0)',
|
|
borderRadius: '8px',
|
|
padding: '16px',
|
|
background: 'var(--color-card, #fff)',
|
|
color: 'var(--color-foreground, #0f172a)',
|
|
maxWidth: '720px',
|
|
};
|
|
const btnPrimary = {
|
|
font: 'inherit',
|
|
padding: '8px 14px',
|
|
borderRadius: '6px',
|
|
border: '1px solid var(--color-primary, #2563eb)',
|
|
background: 'var(--color-primary, #2563eb)',
|
|
color: '#fff',
|
|
cursor: 'pointer',
|
|
};
|
|
|
|
function SettingsSection() {
|
|
return h('div', { style: card },
|
|
h('div', { style: { fontWeight: 600, marginBottom: '6px' } }, 'User management'),
|
|
h('div', { style: { fontSize: '13px', lineHeight: 1.5, marginBottom: '14px', color: 'var(--color-muted-foreground, #64748b)' } },
|
|
'Users are created and managed in the VNCdirectory, not in SRCmail. ' +
|
|
'Add a user there and assign them to the SRC organization to give them a mailbox automatically.'),
|
|
h('button', {
|
|
type: 'button',
|
|
style: btnPrimary,
|
|
onClick: () => {
|
|
try { host.ui.openExternalUrl(MANAGE_USERS_URL); } catch (err) {
|
|
// Fallback if the sandbox blocks window.open: navigate a normal link.
|
|
window.open(MANAGE_USERS_URL, '_blank', 'noopener,noreferrer');
|
|
}
|
|
},
|
|
}, 'Open VNCdirectory →'),
|
|
);
|
|
}
|
|
|
|
export const slots = {
|
|
'settings-section': { component: SettingsSection, order: 100 },
|
|
};
|
|
|
|
export async function activate(api) {
|
|
api.log.info('manage-users plugin activated');
|
|
}
|