Path : /home/vishqocm/pcib.in/temp/
File Upload :
Current File : /home/vishqocm//pcib.in/temp/admin_email_verification.sql

-- 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;