Files
website-secure/scripts/create-users-tables.sql
T
2026-06-01 15:36:16 +01:00

60 lines
2.3 KiB
SQL

-- Users table
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
role VARCHAR(50) DEFAULT 'user',
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
-- User permissions table
CREATE TABLE IF NOT EXISTS user_permissions (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
-- Section access (which pages can be viewed)
can_view_dashboard BOOLEAN DEFAULT true,
can_view_components BOOLEAN DEFAULT true,
can_view_products BOOLEAN DEFAULT true,
can_view_production BOOLEAN DEFAULT true,
can_view_suppliers BOOLEAN DEFAULT true,
can_view_customers BOOLEAN DEFAULT true,
can_view_stock_history BOOLEAN DEFAULT true,
can_view_stock_take BOOLEAN DEFAULT true,
can_view_logistics BOOLEAN DEFAULT true,
can_view_settings BOOLEAN DEFAULT false,
-- Financial visibility
can_view_financial BOOLEAN DEFAULT false,
-- Actions
can_create BOOLEAN DEFAULT false,
can_edit BOOLEAN DEFAULT false,
can_delete BOOLEAN DEFAULT false,
-- Download/export
can_download BOOLEAN DEFAULT false,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
-- Sessions table for auth
CREATE TABLE IF NOT EXISTS sessions (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
token VARCHAR(255) UNIQUE NOT NULL,
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
-- Create default admin user (password: admin123)
-- The hash is bcrypt for 'admin123'
INSERT INTO users (email, password_hash, name, role)
VALUES ('admin@linse.com', '$2b$10$K7L1OJ45/4Y2nIvOLPjKYeOIEZqMh0XKmYZKJKjKmJKmJKjKmJKjK', 'Administrator', 'admin')
ON CONFLICT (email) DO NOTHING;
-- Create permissions for admin user
INSERT INTO user_permissions (user_id, can_view_dashboard, can_view_components, can_view_products, can_view_production, can_view_suppliers, can_view_customers, can_view_stock_history, can_view_stock_take, can_view_logistics, can_view_settings, can_view_financial, can_create, can_edit, can_delete, can_download)
SELECT id, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true
FROM users WHERE email = 'admin@linse.com'
ON CONFLICT DO NOTHING;