Loginfunction Documentation

Login Function Controller Documentation

File: /controllers/loginfunction.php

Purpose: Login utilities and system initialization helper functions

Last Updated: December 20, 2024

Total Functions: 6+

Lines of Code: ~274


๐Ÿ“‹ Overview

The Login Function Controller serves as a utility module for system initialization and user group management. It handles:

Primary Functions

Related Controllers


๐Ÿ—„๏ธ Database Tables

Primary Tables (Direct Operations)

Table NamePurposeKey Columns
**properties**System properties/permissionspropertyid, propertyname, propertyparent, propertydefault
**usergroup**User groups/rolesusergroupid, usergroupname, startpage, level
**user**User accountsuserid, username, password, usergroupid
**relusergroupproperties**User group permissionsusergroupid, propertyid, propertyvalue
---

๐Ÿ”‘ Key Functions

1. Default Action - Property Initialization

Location: Line 85

Purpose: Initialize system properties and redirect to login

Process Flow:

1. Execute properties SQL file

2. Create default user group

3. Redirect to login page

Features:


2. addUserGroup() - Create Default Admin Group

Location: Line 115

Purpose: Create default admin user group with full permissions

Function Signature:

function addUserGroup() {
    global $myUsergroup, $myUsergroupRecord, $myUsergroupEx;
}

Process Flow:

1. Check if admin group exists

2. Set group properties:

- Name: "admin"

- Start page: "articleController.php"

- Level: 1 (admin level)

- Menu visibility: enabled

- Various permissions

3. Insert user group

4. Add group permissions

5. Create admin user account

Group Permissions Set:


3. addReluesUsergroup() - Setup Group Permissions

Location: Line 184

Purpose: Add property permissions for user group

Function Signature:

function addReluesUsergroup($usergroupId) {
    // Add all system properties to group with default values
}

Process Flow:

1. Load all system properties

2. For admin group (ID = 1):

- Add each property with value 0 (allowed)

- Create permission records


4. addUser() - Create Default Admin User

Location: Line 207

Purpose: Create default admin user account

Function Signature:

function addUser($usergroupId) {
    global $myUser, $myUserRecord;
}

Process Flow:

1. Check if user exists for group

2. Set user properties:

- Username: "admin"

- Password: "manager"

- User level: matches group ID

3. Insert user record


5. run_sql_file() - SQL File Processor

Location: Line 225

Purpose: Execute SQL commands from file

Function Signature:

function run_sql_file($location) {
    // Process and execute SQL file
}

Process Flow:

1. Connect to database (hardcoded MySQL connection)

2. Set charset to UTF-8

3. Insert hardcoded property record

4. Load SQL file content

5. Remove comments

6. Split into individual commands

7. Execute each command

8. Return success/total counts

Legacy Code Issues:


๐Ÿ”„ Workflows

Workflow 1: System Initialization

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
START: System Setup
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
1Initialize Properties
- Execute pro.sql file
- Load system properties
- Setup permission structure
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
2Create Admin User Group
- Check if admin group exists
- Set group properties and permissions
- Insert user group record
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
3Setup Group Permissions
- Load all system properties
- Create permission records for admin group
- Set default permission values
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
4Create Admin User
- Check if admin user exists
- Set user credentials (admin/manager)
- Insert user record
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
5Redirect to Login
- System ready for use
- Redirect to login.php
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


๐ŸŒ URL Routes & Actions

URL ParameterFunction CalledDescription
`do=` (empty)Default actionInitialize system properties and setup
`do=sucess`Success pageDisplay success message
`do=error`Error pageDisplay error message
---

๐Ÿ”’ Security & Permissions

Default Admin Setup

// Default admin credentials
$myUser->username = 'admin';
$myUser->password = 'manager';  // Plain text - SECURITY RISK
$myUser->userlevel = $usergroupId;

Security Issues:

Permission Structure

// Default permission setup
$myRelusergrouppropertie->propertyvalue = 0;  // 0 = allowed, 1 = denied


๐Ÿ“Š Performance Considerations

Database Issues

1. Deprecated MySQL Extension: Uses old mysql_* functions

2. Hardcoded Connection: Direct database credentials

3. No Connection Pooling: Creates new connections

4. No Query Optimization: Basic SQL execution

Legacy Code Problems

// DEPRECATED: mysql_* functions
$con = mysql_connect("localhost", "root", "123456");
mysql_select_db("arabcity", $con);

// Should use MySQLi or PDO instead


๐Ÿ› Common Issues & Troubleshooting

1. Database Connection Failures

Issue: Cannot connect to MySQL

Cause: Hardcoded credentials or deprecated MySQL extension

Debug:

// Check MySQL extension
if (!extension_loaded('mysql')) {
    echo "MySQL extension not loaded";
}

// Check connection
$con = mysql_connect("localhost", "root", "123456");
if (!$con) {
    echo "Connection failed: " . mysql_error();
}

2. Property Initialization Errors

Issue: Properties not loaded correctly

Cause: SQL file execution failure

Debug:

// Check SQL file existence
if (!file_exists("initialValues/pro.sql")) {
    echo "SQL file not found";
}

// Check file permissions
if (!is_readable("initialValues/pro.sql")) {
    echo "SQL file not readable";
}

3. User Group Creation Errors

Issue: Admin group not created

Cause: Variable scope or database errors

Fix:

// Check variable declaration
global $myUsergroup, $myUsergroupRecord;

// Verify group creation
$usergroupValidation = $myUsergroupEx->queryAllWithName("admin");
if (count($usergroupValidation) <= 0) {
    echo "Admin group creation failed";
}

4. Permission Setup Issues

Issue: Permissions not assigned correctly

Cause: Property loading or insertion failures

Debug:

-- Check properties loaded
SELECT COUNT(*) FROM properties;

-- Check permissions created
SELECT COUNT(*) FROM relusergroupproperties WHERE usergroupid = 1;


๐Ÿงช Testing Scenarios

Test Case 1: Fresh Installation

1. Clear database tables
2. Access loginfunction.php
3. Verify properties loaded
4. Check admin group created
5. Confirm admin user exists
6. Test login with admin/manager

Test Case 2: Duplicate Initialization

1. Run initialization twice
2. Verify no duplicate groups
3. Check no duplicate users
4. Confirm permissions intact

Test Case 3: SQL File Processing

1. Test with missing SQL file
2. Test with corrupted SQL file
3. Verify error handling
4. Check rollback behavior


โš ๏ธ Upgrade Requirements

Immediate Security Fixes Needed

1. Password Hashing: Implement proper password encryption

2. Database Layer: Replace deprecated MySQL functions

3. Error Handling: Add proper exception handling

4. Input Validation: Add parameter sanitization

Recommended Improvements

// Replace deprecated MySQL with MySQLi
$conn = new mysqli($host, $user, $password, $database);

// Add password hashing
$hashedPassword = password_hash('manager', PASSWORD_DEFAULT);

// Add proper error handling
try {
    $result = $conn->query($sql);
    if (!$result) {
        throw new Exception($conn->error);
    }
} catch (Exception $e) {
    error_log($e->getMessage());
}


๐Ÿ“š Related Documentation


Documented By: AI Assistant

Review Status: โœ… Complete

Security Review: โŒ Critical issues identified

Next Review: Immediate security updates required