-- Add email verification status to user management views in admin
CREATE OR REPLACE VIEW admin_user_view AS
SELECT
u.id,
u.username,
u.email,
u.first_name,
u.last_name,
u.full_name,
u.role,
u.status,
u.email_verified,
CASE
WHEN u.email_verified = 1 THEN 'Verified'
ELSE 'Not Verified'
END AS email_status,
u.created_at,
u.updated_at
FROM
users u
ORDER BY
u.id DESC;
-- Add email verification functionality to user management in admin
CREATE OR REPLACE PROCEDURE admin_verify_user_email(IN user_id INT)
BEGIN
UPDATE users SET email_verified = 1, status = CASE WHEN status = 'pending' THEN 'active' ELSE status END WHERE id = user_id;
-- Delete any existing verification tokens for this user
DELETE FROM user_verifications WHERE user_id = user_id;
-- Log activity
INSERT INTO activities (activity_type, activity_description, ip_address, user_id, created_at)
VALUES ('admin', CONCAT('Admin verified email for user ID: ', user_id), '127.0.0.1', 1, NOW());
END;
-- Add procedure to unverify a user's email (for testing)
CREATE OR REPLACE PROCEDURE admin_unverify_user_email(IN user_id INT)
BEGIN
UPDATE users SET email_verified = 0 WHERE id = user_id;
-- Log activity
INSERT INTO activities (activity_type, activity_description, ip_address, user_id, created_at)
VALUES ('admin', CONCAT('Admin unverified email for user ID: ', user_id), '127.0.0.1', 1, NOW());
END;
-- Add procedure to resend verification email from admin
CREATE OR REPLACE PROCEDURE admin_resend_verification_email(IN user_id INT)
BEGIN
-- Here we would typically call a PHP function to send the email
-- But we can log that the admin requested a reverification
INSERT INTO activities (activity_type, activity_description, ip_address, user_id, created_at)
VALUES ('admin', CONCAT('Admin requested email verification resend for user ID: ', user_id), '127.0.0.1', 1, NOW());
END;
-- Add view for verification tokens
CREATE OR REPLACE VIEW admin_verification_tokens AS
SELECT
v.id,
v.user_id,
u.username,
u.email,
v.token,
v.created_at,
v.expires_at,
CASE
WHEN v.expires_at > NOW() THEN 'Valid'
ELSE 'Expired'
END AS status
FROM
user_verifications v
JOIN
users u ON v.user_id = u.id
ORDER BY
v.created_at DESC;
-- Add view for password reset tokens
CREATE OR REPLACE VIEW admin_password_reset_tokens AS
SELECT
p.id,
p.user_id,
u.username,
u.email,
p.token,
p.created_at,
p.expires_at,
CASE
WHEN p.expires_at > NOW() THEN 'Valid'
ELSE 'Expired'
END AS status
FROM
password_resets p
JOIN
users u ON p.user_id = u.id
ORDER BY
p.created_at DESC;