Managing User Access with Roles and Profiles

Managing User Access with Roles and Profiles

Controlling who can access what in your application is very important. That’s where roles and profiles help.


✅ What Are Roles?

Roles define what a user can do in the system.

🎯 Common Roles:

  • Admin – full control

  • Editor – can change content

  • Viewer – read-only access

  • User – regular access

πŸ’‘ Example:

{ "name": "Rasagna", "email": "rasagna@example.com", "role": "admin" }

✅ What Are Profiles?

Profiles store user-related information, like:

  • Name

  • Email

  • Preferences

  • Photo

  • Language

  • Theme

Profiles help personalize the experience but do not control permissions.


🧠 Difference Between Roles and Profiles:

FeatureRoleProfile
PurposeAccess controlUser info & preferences
Editable byAdminUser (mostly)
AffectsWhat user can doHow user sees the system

πŸ”— Why Manage Roles?

  • Prevent unauthorized access

  • Give the right access to the right person

  • Improve security

  • Separate concerns (Admin vs. User)


πŸ› ️ Implementing Role-Based Access in a Web App

Let’s use Node.js + Express + MongoDB + React for the example.


πŸ“ MongoDB User Schema Example

// models/User.js const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: String, email: String, password: String, role: { type: String, enum: ['admin', 'editor', 'viewer'], default: 'viewer' }, profile: { photo: String, language: String, theme: String, } }); module.exports = mongoose.model('User', userSchema);

πŸ§ͺ Middleware to Check Role in Express.js

// middleware/checkRole.js function checkRole(role) { return (req, res, next) => { if (req.user && req.user.role === role) { next(); } else { return res.status(403).json({ message: "Access Denied" }); } }; } module.exports = checkRole;

πŸ” Example Routes with Role Protection

const express = require('express'); const router = express.Router(); const checkRole = require('./middleware/checkRole'); // Only admin can access this route router.get('/admin/data', checkRole('admin'), (req, res) => { res.json({ secret: "Admin only content" }); });

πŸ§‘‍πŸ’» React: Conditional Rendering Based on Role

function Dashboard({ user }) { return ( <div> <h1>Welcome, {user.name}</h1> {user.role === 'admin' && ( <button onClick={handleAdminTask}>Admin Task</button> )} {user.role === 'editor' && ( <button onClick={handleEditContent}>Edit Content</button> )} </div> ); }

πŸ” Frontend Route Guard (React + React Router)

import { Navigate } from "react-router-dom"; function PrivateRoute({ user, children, allowedRoles }) { return allowedRoles.includes(user.role) ? children : <Navigate to="/unauthorized" />; }

πŸ“ Profile Management in React

function UserProfile({ user }) { return ( <div> <img src={user.profile.photo} alt="User" /> <p>Name: {user.name}</p> <p>Language: {user.profile.language}</p> <p>Theme: {user.profile.theme}</p> </div> ); }

πŸ”„ Updating Role in Admin Panel

// PUT /api/users/:id/role router.put('/users/:id/role', checkRole('admin'), async (req, res) => { const { role } = req.body; const updatedUser = await User.findByIdAndUpdate(req.params.id, { role }, { new: true }); res.json(updatedUser); });

πŸ”’ Secure Practices

  • Always validate role on server-side

  • Do not trust frontend-only checks

  • Store role info securely (e.g., JWT or sessions)

  • Use HTTPS

  • Keep roles simple and easy to understand


🧠 Bonus: Role Hierarchy (Optional)

You can define role levels:

const roleLevels = { admin: 3, editor: 2, viewer: 1 }; function hasAccess(userRole, requiredRole) { return roleLevels[userRole] >= roleLevels[requiredRole]; }

πŸ›‘️ JWT Token with Role Example

// JWT payload { id: "user123", name: "Rasagna", role: "editor" }

Use this info to authorize routes without querying DB every time.


🚦 Summary Table

FeatureExample
Role Fieldadmin, editor, viewer
Profile DataName, Theme, Language
Access CheckExpress Middleware
UI DisplayReact Role-Based Components
Auth StorageJWT or Session

🧩 Real-World Example:

Imagine an online learning platform:

RoleAccess Rights
AdminAdd/delete courses, manage users
TeacherUpload materials, grade students
StudentView lessons, submit assignments

You can create roles and apply access rules as shown above.


Learn Salesforce Development Training Course


Read More




Comments

Popular posts from this blog

Tosca System Requirements and Installation Guide (Step-by-Step)

How to Install Selenium for Python Step-by-Step

Tosca Commander: A Beginner’s Overview