User Management
User Management
Section titled “User Management”This guide covers user administration, including inviting users, managing roles and permissions, and monitoring user activity.
Accessing User Management
Section titled “Accessing User Management”User management is available at:
https://app.yourcompany.com/settings/peopleRequirements:
- Admin access (users with
@querri.comemail oris_admin=trueflag) - Organization membership
User Roles
Section titled “User Roles”Querri supports the following user roles:
- Access Level: Read-only
- Permissions:
- View projects they’re invited to
- View dashboards shared with them
- Cannot create or edit resources
- Use Case: External stakeholders, clients, auditors
Member (Editor)
Section titled “Member (Editor)”- Access Level: Read and write
- Permissions:
- Create projects and dashboards
- Edit their own resources
- Share resources with others
- Upload files
- Use integrations
- Use Case: Standard team members, analysts
- Access Level: Full control
- Permissions:
- All member permissions
- Access integration marketplace (
/settings/integrations) - Manage organization users
- Configure organization settings
- View usage metrics
- Deploy org-wide integrations
- Use Case: IT administrators, team leads
Inviting Users
Section titled “Inviting Users”Via Settings Interface
Section titled “Via Settings Interface”- Navigate to Settings > People
- Click Invite Users button
- Enter email addresses (comma-separated for multiple)
- Select role (Guest or Member)
- Click Send Invitations
Example:
john.doe@company.com, jane.smith@company.comRole: MemberInvitation Process
Section titled “Invitation Process”- System sends invitation email to specified addresses
- Users receive email with sign-up link
- Users authenticate via WorkOS SSO
- Users are automatically added to organization with assigned role
Bulk Invitations
Section titled “Bulk Invitations”For bulk user imports, use comma-separated email lists:
user1@company.com, user2@company.com, user3@company.comLimitations:
- Maximum 100 users per invitation batch
- All users in batch receive same role
Managing Existing Users
Section titled “Managing Existing Users”Viewing User List
Section titled “Viewing User List”The People page displays:
- User name and email
- Current role
- Last login time
- Account status (Active, Pending, Suspended)
Filtering Users
Section titled “Filtering Users”Use the search bar to filter users:
- Search by name:
John Doe - Search by email:
john@company.com - Search partial matches:
john
Editing User Roles
Section titled “Editing User Roles”- Locate user in People list
- Click three-dot menu (⋮) next to user
- Select Edit User
- Change role in dialog
- Click Save Changes
Note: Role changes take effect immediately.
Updating User Information
Section titled “Updating User Information”To update user name or email:
- Click three-dot menu (⋮) next to user
- Select Edit User
- Update First Name or Last Name
- Click Save Changes
Note: Email changes require re-verification through WorkOS.
Removing Users
Section titled “Removing Users”Soft Delete (Recommended)
Section titled “Soft Delete (Recommended)”- Navigate to Settings > People
- Locate user to remove
- Click three-dot menu (⋮)
- Select Remove User
- Confirm deletion in dialog
Effects:
- User loses access immediately
- User’s projects remain accessible to organization
- User’s data preserved for audit purposes
- Can be restored if needed
Hard Delete (Admin via Database)
Section titled “Hard Delete (Admin via Database)”For complete user removal including data:
# Connect to MongoDBdocker compose exec mongo mongosh -u querri -p
# Switch to databaseuse querri
# Find user by emaildb.users.findOne({user_email: "user@company.com"})
# Delete user (WARNING: Irreversible)db.users.deleteOne({user_email: "user@company.com"})
# Remove user from organizationsdb.organizations.updateMany( {}, { $pull: { members: { email: "user@company.com" } } })Warning: Hard delete is irreversible and removes all user data.
Admin User Designation
Section titled “Admin User Designation”Methods for Admin Access
Section titled “Methods for Admin Access”Users gain admin access through one of two methods:
1. Email Domain (@querri.com)
Section titled “1. Email Domain (@querri.com)”Users with @querri.com email addresses automatically have admin privileges:
admin@querri.com → Adminsupport@querri.com → AdminNote: This is primarily for Querri platform administrators.
2. is_admin Flag
Section titled “2. is_admin Flag”For organization administrators, set the is_admin flag in the database:
# Connect to MongoDBdocker compose exec mongo mongosh -u querri -p
# Switch to databaseuse querri
# Set admin flagdb.users.updateOne( {user_email: "admin@yourcompany.com"}, {$set: {is_admin: true}})Granting Admin Access
Section titled “Granting Admin Access”To grant admin access to a user:
- Identify user’s email address
- Connect to MongoDB:
Terminal window docker compose exec mongo mongosh -u querri -p - Execute admin update:
use querridb.users.updateOne({user_email: "user@company.com"},{$set: {is_admin: true}})
- Verify update:
db.users.findOne({user_email: "user@company.com"}, {is_admin: 1})
Revoking Admin Access
Section titled “Revoking Admin Access”# Connect to MongoDBdocker compose exec mongo mongosh -u querri -p
# Remove admin flaguse querridb.users.updateOne( {user_email: "user@company.com"}, {$set: {is_admin: false}})Organization Membership
Section titled “Organization Membership”Adding Users to Organization
Section titled “Adding Users to Organization”Users are automatically added to the organization when:
- Invited via Settings > People
- Signing up with organization invite link
- Assigned to organization via WorkOS
Viewing Organization Members
Section titled “Viewing Organization Members”# Connect to MongoDBdocker compose exec mongo mongosh -u querri -p
# List organization membersuse querridb.organizations.findOne( {name: "Your Organization"}, {members: 1})Removing Users from Organization
Section titled “Removing Users from Organization”- Via UI: Use Remove User in Settings > People
- Via database:
db.organizations.updateOne({name: "Your Organization"},{$pull: {members: {email: "user@company.com"}}})
User Activity Monitoring
Section titled “User Activity Monitoring”Last Login Information
Section titled “Last Login Information”The People page displays last login time for each user:
John Doe - Last login: 2 hours agoJane Smith - Last login: 3 days agoViewing User Activity Logs
Section titled “Viewing User Activity Logs”Query MongoDB for detailed user activity:
# Connect to MongoDBdocker compose exec mongo mongosh -u querri -p
use querri
# Find user's recent projectsdb.projects.find( {created_by: "user@company.com"}, {title: 1, created_at: 1}).sort({created_at: -1}).limit(10)
# Find user's recent stepsdb.steps.find( {created_by: "user@company.com"}, {title: 1, created_at: 1}).sort({created_at: -1}).limit(10)Active Users Report
Section titled “Active Users Report”Generate active users report:
// Users active in last 30 daysdb.users.find( { last_login: { $gte: new Date(Date.now() - 30*24*60*60*1000) } }, {user_email: 1, user_name: 1, last_login: 1}).sort({last_login: -1})User Permissions
Section titled “User Permissions”Permission Levels
Section titled “Permission Levels”Querri uses Fine-Grained Authorization (FGA) with these permission levels:
- Full control over resource
- Can delete resource
- Can manage permissions
- Can transfer ownership
Editor
Section titled “Editor”- Can view and edit resource
- Can create child resources (steps in project)
- Cannot delete resource
- Cannot change permissions
Viewer
Section titled “Viewer”- Read-only access
- Can view resource and results
- Can export data
- Cannot modify resource
Checking User Permissions
Section titled “Checking User Permissions”View a user’s permissions on a resource:
// Connect to MongoDBdb.permissions.find({ user_email: "user@company.com", resource_id: "project_uuid_here"})Permission Inheritance
Section titled “Permission Inheritance”- Projects: Direct permissions or organization membership
- Steps: Inherit from parent project
- Dashboards: Direct permissions or shared links
- Files: Inherit from associated project
User Account Status
Section titled “User Account Status”Account States
Section titled “Account States”Users can have the following states:
Active
Section titled “Active”- User has completed signup
- Can access the system
- Normal permissions apply
Pending
Section titled “Pending”- Invitation sent, not yet accepted
- Shows as “Pending” in user list
- No system access until signup complete
Suspended
Section titled “Suspended”- Admin-disabled account
- Cannot log in
- Data preserved
Suspending User Accounts
Section titled “Suspending User Accounts”To temporarily disable a user:
// Connect to MongoDBdb.users.updateOne( {user_email: "user@company.com"}, {$set: {is_suspended: true}})Reactivating Suspended Accounts
Section titled “Reactivating Suspended Accounts”// Connect to MongoDBdb.users.updateOne( {user_email: "user@company.com"}, {$set: {is_suspended: false}})User Data Management
Section titled “User Data Management”Viewing User Data
Section titled “Viewing User Data”List all resources owned by a user:
// Projectsdb.projects.find({created_by: "user@company.com"}).count()
// Filesdb.files.find({uploaded_by: "user@company.com"}).count()
// Dashboardsdb.dashboards.find({created_by: "user@company.com"}).count()Transferring User Resources
Section titled “Transferring User Resources”When a user leaves, transfer their resources:
// Transfer all projectsdb.projects.updateMany( {created_by: "old-user@company.com"}, {$set: {created_by: "new-user@company.com"}})
// Transfer all dashboardsdb.dashboards.updateMany( {created_by: "old-user@company.com"}, {$set: {created_by: "new-user@company.com"}})
// Update permissionsdb.permissions.updateMany( {user_email: "old-user@company.com", permission: "owner"}, {$set: {user_email: "new-user@company.com"}})Authentication Integration
Section titled “Authentication Integration”WorkOS SSO
Section titled “WorkOS SSO”Querri uses WorkOS for authentication:
- Users click “Sign In”
- Redirected to WorkOS authentication
- Authenticate via configured SSO provider (Google, Microsoft, etc.)
- Redirected back to Querri with JWT token
- Token validated and session created
Supported SSO Providers
Section titled “Supported SSO Providers”WorkOS supports:
- Google Workspace
- Microsoft Azure AD
- Okta
- OneLogin
- Custom SAML providers
Configure SSO providers in WorkOS Dashboard.
Troubleshooting User Issues
Section titled “Troubleshooting User Issues”User Can’t Log In
Section titled “User Can’t Log In”-
Check user exists in database:
db.users.findOne({user_email: "user@company.com"}) -
Verify user is not suspended:
db.users.findOne({user_email: "user@company.com"},{is_suspended: 1}) -
Check WorkOS configuration:
- Verify redirect URI matches configured value
- Check WorkOS organization membership
- Review WorkOS logs
User Missing Permissions
Section titled “User Missing Permissions”-
Check user role:
db.users.findOne({user_email: "user@company.com"},{role: 1, is_admin: 1}) -
Verify organization membership:
db.organizations.findOne({members: {$elemMatch: {email: "user@company.com"}}}) -
Check resource permissions:
db.permissions.find({user_email: "user@company.com",resource_id: "resource_uuid"})
User Not Receiving Invitation
Section titled “User Not Receiving Invitation”- Check email sent successfully (SendGrid logs if configured)
- Verify email address is correct
- Check spam/junk folders
- Resend invitation via UI
Best Practices
Section titled “Best Practices”User Onboarding
Section titled “User Onboarding”- Send invitations in batches - Group users by role/department
- Provide onboarding materials - Include link to user guide
- Set appropriate roles - Start with Member, upgrade to Admin as needed
- Monitor first login - Follow up with users who haven’t logged in within 7 days
Security
Section titled “Security”- Review admin users quarterly - Ensure admins still need elevated access
- Audit user activity - Review user activity logs for suspicious behavior
- Remove inactive users - Disable accounts inactive for 90+ days
- Use SSO - Leverage WorkOS SSO for centralized authentication
Maintenance
Section titled “Maintenance”- Regular user audits - Monthly review of user list
- Clean up test accounts - Remove testing/demo accounts
- Update user information - Keep names and emails current
- Document role changes - Track why users were granted admin access
API Integration
Section titled “API Integration”For automated user management, use the Querri API:
List Users
Section titled “List Users”curl -X GET "https://app.yourcompany.com/api/users" \ -H "Authorization: Bearer YOUR_JWT_TOKEN"Invite User
Section titled “Invite User”curl -X POST "https://app.yourcompany.com/api/users/invite" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "email": "newuser@company.com", "role": "member" }'Update User Role
Section titled “Update User Role”curl -X PATCH "https://app.yourcompany.com/api/users/{user_id}" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "role": "admin" }'Next Steps
Section titled “Next Steps”- Organization Settings - Configure organization-wide settings
- Security & Permissions - Understand the permission model
- Monitoring & Usage - Track user usage and activity