Files
SRCmail/vnc/plugins/manage-users/src/index.js
T

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');
}