124 lines
2.9 KiB
SQL
124 lines
2.9 KiB
SQL
/**
|
|
* User Role Assignment Script
|
|
*
|
|
* Purpose: Assign roles to specific users after fresh database setup
|
|
*
|
|
* Usage:
|
|
* 1. Update the email addresses below with your actual users
|
|
* 2. Run: psql -d royal_enfield_workflow -f scripts/assign-user-roles.sql
|
|
*
|
|
* Roles:
|
|
* - USER: Default role for all employees
|
|
* - MANAGEMENT: Department heads, managers, auditors
|
|
* - ADMIN: IT administrators, system managers
|
|
*/
|
|
|
|
-- ============================================
|
|
-- ASSIGN ADMIN ROLES
|
|
-- ============================================
|
|
-- Replace with your actual admin email addresses
|
|
|
|
UPDATE users
|
|
SET role = 'ADMIN'
|
|
WHERE email IN (
|
|
'admin@royalenfield.com',
|
|
'it.admin@royalenfield.com',
|
|
'system.admin@royalenfield.com'
|
|
-- Add more admin emails here
|
|
);
|
|
|
|
-- Verify ADMIN users
|
|
SELECT
|
|
email,
|
|
display_name,
|
|
role,
|
|
updated_at
|
|
FROM users
|
|
WHERE role = 'ADMIN'
|
|
ORDER BY email;
|
|
|
|
-- ============================================
|
|
-- ASSIGN MANAGEMENT ROLES
|
|
-- ============================================
|
|
-- Replace with your actual management email addresses
|
|
|
|
UPDATE users
|
|
SET role = 'MANAGEMENT'
|
|
WHERE email IN (
|
|
'manager1@royalenfield.com',
|
|
'dept.head@royalenfield.com',
|
|
'auditor@royalenfield.com'
|
|
-- Add more management emails here
|
|
);
|
|
|
|
-- Verify MANAGEMENT users
|
|
SELECT
|
|
email,
|
|
display_name,
|
|
department,
|
|
role,
|
|
updated_at
|
|
FROM users
|
|
WHERE role = 'MANAGEMENT'
|
|
ORDER BY department, email;
|
|
|
|
-- ============================================
|
|
-- VERIFY ALL ROLES
|
|
-- ============================================
|
|
|
|
SELECT
|
|
role,
|
|
COUNT(*) as user_count
|
|
FROM users
|
|
WHERE is_active = true
|
|
GROUP BY role
|
|
ORDER BY
|
|
CASE role
|
|
WHEN 'ADMIN' THEN 1
|
|
WHEN 'MANAGEMENT' THEN 2
|
|
WHEN 'USER' THEN 3
|
|
END;
|
|
|
|
-- ============================================
|
|
-- EXAMPLE: Assign role by department
|
|
-- ============================================
|
|
|
|
-- Make all users in "IT" department as ADMIN
|
|
-- UPDATE users
|
|
-- SET role = 'ADMIN'
|
|
-- WHERE department = 'IT' AND is_active = true;
|
|
|
|
-- Make all users in "Management" department as MANAGEMENT
|
|
-- UPDATE users
|
|
-- SET role = 'MANAGEMENT'
|
|
-- WHERE department = 'Management' AND is_active = true;
|
|
|
|
-- ============================================
|
|
-- EXAMPLE: Assign role by designation
|
|
-- ============================================
|
|
|
|
-- Make all "Department Head" as MANAGEMENT
|
|
-- UPDATE users
|
|
-- SET role = 'MANAGEMENT'
|
|
-- WHERE (designation ILIKE '%head%' OR designation ILIKE '%manager%')
|
|
-- AND is_active = true;
|
|
|
|
-- ============================================
|
|
-- Display role summary
|
|
-- ============================================
|
|
|
|
\echo '\n✅ Role assignment complete!\n'
|
|
\echo 'Role Summary:'
|
|
SELECT
|
|
role,
|
|
COUNT(*) as total_users,
|
|
COUNT(CASE WHEN is_active = true THEN 1 END) as active_users
|
|
FROM users
|
|
GROUP BY role
|
|
ORDER BY
|
|
CASE role
|
|
WHEN 'ADMIN' THEN 1
|
|
WHEN 'MANAGEMENT' THEN 2
|
|
WHEN 'USER' THEN 3
|
|
END;
|