[], 'deny' => []]; $form_invites = $is_new && userInvitesReady(); $form_invite_mail = $form_invites && userInviteMailReady(); // Every client - and an archived one only when it has a rule, so saving does not drop it. Those with a rule first. $form_clients = []; $sql = mysqli_query($mysqli, "SELECT client_id, client_name, client_abbreviation, client_archived_at FROM clients WHERE client_archived_at IS NULL OR client_id IN (SELECT client_id FROM user_client_permissions WHERE user_id = $form_user_id) ORDER BY client_id IN (SELECT client_id FROM user_client_permissions WHERE user_id = $form_user_id) DESC, client_archived_at IS NOT NULL, client_name ASC"); while ($row = mysqli_fetch_assoc($sql)) { $form_clients[] = $row; } $value = function ($key) use ($form) { return escapeHtml($form[$key] ?? ''); }; ?>
JPG, PNG, GIF or WebP, up to 5 MB. Without one, their initials.
data-user-name>
If you change it, they sign in with the new address - the old one gets a notice.
>
What they can see and change. Roles
They're emailed a link to choose their own password, so nobody else ever knows it. It works for days - until they use it, they're under Invited. Mail isn't set up, so you get the link to send them yourself - they choose their own password with it. It works for days.
>
data-user-password>
Set, they're emailed that it changed. It also unlocks their copy of the credential vault, so it is set here rather than reset by email.
For you to give them yourself - nothing is emailed. They should change it once they're in.
Multi-factor authentication
>
If they haven't set it up yet, they're asked to at their next sign in - and they can't turn it off.
For a lost or replaced phone - their authenticator app is forgotten, and so are their remembered browsers.
Only limits them to those clients - with none, they see every client. Never keeps them out of a client, whatever else is set.
Archived
> > >
No clients yet.