Users
The Users page manages user accounts for accessing GEM. Each user has authentication credentials, role assignments, and notification preferences.
Overview
User accounts control access to GEM's web interface, mobile apps, and API. Users can be assigned multiple roles, restricted to specific sites, and configured with notification profiles.
Viewing Users
The main grid displays all user accounts with the following columns:
- ID - Unique user identifier
- Username - Login username
- Email - Email address for notifications
- SMS - Phone number for SMS notifications
- Roles - Assigned roles (displayed as comma-separated list)
- Enabled - Whether the account is active
Grid Actions
- Add - Create a new user account
- Edit - Modify an existing user
- Reload - Refresh the grid data
User rows cannot be deleted from this grid — disable the account instead (clear Enabled or set Revoked) so audit history is preserved. Visitors are managed from the dedicated Visitors page.
Creating a User
To create a new user account:
- Click Add in the grid toolbar
- Configure the user properties (see sections below)
- Click Save
User Configuration
The user editor is organized into several sections:
Basic Information
First Name / Last Name
- Optional human-readable name fields
- Used in access logs, visitor host selectors, and printed visitor badges
- First Name is the canonical input; Last Name is optional
Photo
- Optional headshot for the user
- Click Upload to pick an image file (max 1 MB) or Take Photo to capture from the device webcam
- Stored on the user record and printed on visitor badges when this user is selected as a Host
- Click Remove to clear the existing photo
- When Facial Recognition is enabled, the photo is auto-embedded locally (YuNet + MobileFaceNet) and the resulting 512-D embedding is stored encrypted as the
facial_recognition_embeddingattribute. If no face is detected,facial_recognition_embedding_errorrecords the reason. Per-user opt-out is thefacial_recognition_enabledattribute (defaults totrueonce the system-wide toggle is on).
Username
- Internal identifier (lowercase_with_underscores)
- Used for login
- Cannot be changed after creation (tied to audit logs)
- Examples:
john_smith,admin,installer_1
- Email address for notifications
- Optional but recommended
- Used for password reset (if implemented)
- Validated format
SMS
- Phone number for SMS notifications
- Optional
- Format: +1234567890 (include country code)
- Used with notification profiles
Security
Password
- Check "Change Password" to set a new password
- Input field activates when checkbox is checked
- Minimum length: 8 characters (configurable)
- Requirements:
- Recommended: Mixed case, numbers, symbols
- Stored as bcrypt hash
- Never displayed or logged in plain text
PIN
- Check "Change PIN" to set a numeric PIN
- Used for:
- Mobile app quick access
- Keypad entry
- Access control devices
- 4-6 digit numeric code
- Stored encrypted
- PINs must be unique across all users (including disabled accounts) — the server rejects a save that collides with another user's PIN so keypad entry resolves to a single account
Duress PIN
- Check "Change duress PIN" to set a per-user silent panic code
- Granting access uses the user's regular PIN; entering the duress PIN also grants access but additionally fires the access rule's Duress Macro (e.g. arm panic alarm, push notification to security)
- The attacker sees normal door behavior — there is no UI feedback that distinguishes the duress code
- Duress PINs are uniqueness-checked against every other user's
pin,rfid, andduress_pinto prevent collisions
Credential Lifecycle
- Valid From — credentials grant access only at or after this time (optional)
- Valid Until — after this time, access is denied at the door and the user is auto-disabled on every linked access device on the next 15-minute sweep, so cached PINs on devices like 2N intercoms are also revoked
- Revoked — hard stop; overrides any valid window. Re-enabling (clearing this checkbox) automatically re-syncs credentials to all access devices the user has rights on.
Use these for contractor/visitor access without having to remember to manually disable the user when their term ends.
Two-Factor Authentication
- Toggle to require 2FA for this user
- When enabled, user must verify login with:
- SMS code (if SMS configured)
- Email code (if email configured)
- Authenticator app (if configured)
Session Timeout
- Session timeout in minutes
- 0 = No automatic timeout
- Recommended: 60-480 minutes (1-8 hours)
- User must re-authenticate after timeout
Roles
Assign one or more roles to the user:
- Roles define permissions (UIs, routes, API functions)
- Multiple roles combine permissions (additive)
- Common roles:
admin- Full system accessuser- Standard user accessinstaller- Installation and commissioningviewer- Read-only accessapi_only- API access only (no UI)
See Roles for detailed role configuration.
Role Assignment:
- Check all roles that apply
- Roles are displayed in a checkbox grid
- Changes take effect on next login
Sites
Restrict user access to specific sites:
- Leave empty for access to all sites
- Select specific sites to limit access
- Useful for:
- Multi-tenant installations
- Multi-site enterprises
- Service provider accounts
See Sites for site configuration.
Notification Profile
Assign a notification profile:
- Defines when and how user receives notifications
- Includes:
- Email, SMS, and Web Push channel toggles
- Active days (day-of-week schedule)
- Active hours (hour-of-day schedule)
See Notification Profiles for details.
Additional Settings
Account Status (Enabled)
- Toggle to enable/disable the account
- Disabled users cannot log in
- Preserves all configuration and history
User Status
User accounts can be in different states:
Active
- Enabled = Yes
- Can log in and access permitted resources
- Shown with green "Active" badge
Inactive
- Enabled = No
- Cannot log in
- Configuration preserved
- Shown with red "Inactive" badge
Locked (Future)
- Account locked after failed login attempts
- Requires admin to unlock
Security Best Practices
Password Management
- Strong Passwords: Enforce minimum complexity
- Regular Changes: Encourage periodic password updates
- No Sharing: Each person should have their own account
- Service Accounts: Use dedicated accounts for integrations
Role Assignment
- Least Privilege: Assign minimum necessary permissions
- Role Segregation: Separate admin, installer, and user roles
- Review Regularly: Audit role assignments quarterly
- Remove Unused: Delete or disable accounts no longer needed
Two-Factor Authentication
- Enable for Admins: Always require 2FA for admin accounts
- Remote Access: Require 2FA for remote/internet access
- Sensitive Operations: Consider 2FA for critical changes
Session Management
- Appropriate Timeouts: Balance security and convenience
- Admin accounts: 60-120 minutes
- User accounts: 240-480 minutes
- Kiosk/public: 5-15 minutes
- Automatic Logout: Enable for unattended sessions
- Single Session: Consider limiting concurrent logins
Monitoring
- Login Tracking: Review access logs regularly
- Failed Attempts: Monitor for brute force attacks
- Unusual Activity: Investigate unexpected access patterns
- Audit Changes: Track who modified what configuration
Common Workflows
Creating an Admin User
- Click Add
- Set username:
admin - Set strong password
- Check
adminrole - Enable Two-Factor Authentication
- Set Token Duration: 120 minutes
- Click Save
Creating a Standard User
- Click Add
- Set username:
homeowner_name - Enter email for notifications
- Set password
- Check
userrole - Select appropriate sites (if multi-site)
- Assign notification profile
- Click Save
Creating an Installer Account
- Click Add
- Set username:
installer_company - Set temporary password
- Check
installerrole - Set Token Duration: 480 minutes (8 hours)
- Enabled: Yes
- Click Save
- Provide credentials to installer
- Disable account when commissioning complete
Creating an API Service Account
- Click Add
- Set username:
api_integration_name - Set strong password (or generate random)
- Check
api_onlyrole - Token Duration: 0 (no timeout)
- Do NOT assign notification profile
- Click Save
- Use credentials in API integration
Resetting a Password
- Edit the user
- Check Change Password
- Enter new password
- Click Save
- Notify user of password change
Disabling a User Account
- Edit the user
- Set Enabled: No
- Click Save
- User immediately loses access
Granting Temporary Access
- Create user with appropriate roles
- Set Enabled: Yes
- Document expiration date
- On expiration date, set Enabled: No
User Account Limitations
Username Restrictions
- Cannot change username after creation
- Username must be unique
- Lowercase with underscores only
- No special characters except underscore
Deletion Restrictions
- The Users grid does not expose a delete action — disable the account instead (clear Enabled or set Revoked) so audit history stays intact
- User ID 0 is a seeded system sentinel and cannot be removed
- Visitors auto-expire via their
valid_untilwindow — see Visitors
System Accounts
- User ID 0: Internal system user
- Cannot be deleted or disabled
- Used for automated processes
- No login access
Authentication Methods
Password Authentication
- Default method for web interface
- bcrypt hashing with configurable rounds
- Password stored as hash only
PIN Authentication
- Used for mobile app quick access
- Used with keypad devices
- Numeric only (4-6 digits)
- Less secure than password
Token Authentication
- API requests use token-based auth
- Tokens generated on login
- Tokens expire based on Token Duration
- Tokens invalidated on logout
Two-Factor Authentication
When enabled:
- User enters username/password
- System sends verification code via SMS or email
- User enters code to complete login
- Code expires after 10 minutes
- Limited retry attempts
Permissions and Access Control
User permissions are determined by:
- Roles: Define what resources user can access
- Sites: Limit user to specific sites
- Enabled Status: Must be enabled to access anything
Permission Evaluation:
Can Access = Enabled AND (Sites Match OR Sites Empty) AND Roles Allow
See Roles for detailed permission configuration.
Troubleshooting
User Cannot Log In
Check:
- Enabled Status: Ensure account is enabled
- Password: Verify password is correct
- Roles: Ensure user has at least one role with login permission
- Sites: If sites are configured, verify current site matches
- Network: Check if firewall is blocking access
- Logs: Review access logs for error messages
User Has Wrong Permissions
Check:
- Roles: Verify correct roles are assigned
- Role Rules: Check role configuration in Roles page
- Sites: Verify site restrictions if applicable
- Cache: User may need to log out and back in
Two-Factor Not Working
Check:
- Email/SMS: Verify contact information is correct
- Delivery: Check email spam folder or SMS delivery
- Code Expiry: Codes expire after 10 minutes
- Retry Limit: Too many failed attempts may lock verification
Session Expires Too Quickly
Solution:
- Edit user
- Increase Token Duration
- Click Save
- User must log in again for new timeout to apply
Removing a User
The Users grid does not have a delete action by design — deleting a user would orphan access logs, audit history, and access-control references. Instead:
- Edit the user
- Clear Enabled, or set Revoked under Credential Lifecycle
- Click Save
The account immediately loses access (revoked credentials propagate to access devices), but history and references stay intact.
Related Documentation
- Roles - Configuring user roles and permissions
- Sites - Multi-site access control
- Access Control - Physical access control
- Notification Profiles - User notifications
- Access Log - Monitoring user activity