Auth

Labels

Tag users for custom permissions - create VIP tiers, subscription levels, beta groups, or any access control system you need.

Labels are tags you attach to users to grant them special permissions. Create a subscriber label for paying users, beta-tester for early access, moderator for content managers - any access control system you can imagine.

How labels work

  • Simple tags - Just strings like "subscriber", "vip", "beta-user"
  • Permission-based - Grant access using Role.label('subscriber')
  • Multiple labels - Users can have many labels at once
  • Server-managed - Only backend can add/remove labels
  • Instant access - Label changes take effect immediately

Add labels to users

Use the Server SDK to tag users:

import { Client } from "@nuvix/client";

const nx = new Client()
    .setEndpoint('https://api.nuvix.in/v1')
    .setProject('<PROJECT_ID>')
    .setKey('<API_KEY>');

const users = client.users;

// Tag user as subscriber
await users.updateLabels('<USER_ID>', ['subscriber']);

// Add multiple labels
await users.updateLabels('<USER_ID>', ['vip', 'beta-tester', 'moderator']);

// Remove all labels (empty array)
await users.updateLabels('<USER_ID>', []);

Use labels in permissions

Control access based on user labels:

// Only subscribers can read premium content
const premiumPermissions = [
    Permission.read(Role.label('subscriber'))
];

// VIP users get full access to special features
const vipPermissions = [
    Permission.read(Role.label('vip')),
    Permission.write(Role.label('vip')),
    Permission.update(Role.label('vip')),
    Permission.delete(Role.label('vip'))
];

// Beta testers can access new features
const betaPermissions = [
    Permission.read(Role.label('beta-tester'))
];

Common label systems

Subscription tiers:

// Free, Pro, Enterprise access levels
await users.updateLabels(userId, ['free']);
await users.updateLabels(userId, ['pro']);  
await users.updateLabels(userId, ['enterprise']);

User roles:

// Content management roles
await users.updateLabels(userId, ['moderator']);
await users.updateLabels(userId, ['admin']);
await users.updateLabels(userId, ['super-admin']);

Feature access:

// Beta features and early access
await users.updateLabels(userId, ['beta-tester']);
await users.updateLabels(userId, ['early-access']);
await users.updateLabels(userId, ['feature-flags']);

Content tiers:

// Different content access levels
await users.updateLabels(userId, ['basic']);
await users.updateLabels(userId, ['premium']);
await users.updateLabels(userId, ['exclusive']);

Implementation examples

Check user labels:

// Get current user with labels
const user = await nx.account.get();
const hasSubscription = user.labels.includes('subscriber');
const isVip = user.labels.includes('vip');

// Show appropriate UI based on labels
if (hasSubscription) {
    showPremiumContent();
}

Restrict API access:

// Middleware to check labels
function requireLabel(label) {
    return async (req, res, next) => {
        const user = await nx.account.get();
        if (user.labels.includes(label)) {
            next();
        } else {
            res.status(403).json({ error: 'Insufficient permissions' });
        }
    };
}

// Protect premium endpoints
app.get('/api/premium', requireLabel('subscriber'), handlePremiumRequest);

Progressive access:

// Upgrade user access over time
await users.updateLabels(userId, ['new-user']);     // Day 1
await users.updateLabels(userId, ['active-user']);  // Day 30  
await users.updateLabels(userId, ['power-user']);   // Day 90

Label best practices

Keep labels simple - Use clear, descriptive names like "subscriber" not "sub" Be consistent - Establish naming conventions and stick to them Document permissions - Map out what each label can access Use sparingly - Too many labels become hard to manage Plan for growth - Design your label system to scale with features

Common label patterns:

  • free, pro, enterprise - Subscription levels
  • moderator, admin - User roles
  • beta-tester, early-access - Feature access
  • verified, trusted - Trust levels
  • mobile, desktop - Platform access

Labels give you fine-grained control over who can access what. Build any permission system you need with simple tags and role-based access control.

How is this guide?

Last updated on

Labels