Deploy from Lumerel

This commit is contained in:
Lumerel Deploy
2026-02-16 23:36:29 +00:00
commit 315b42ff7a
19 changed files with 971 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
<?php
namespace App\Controllers;
session_start();
use App\Models\User;
class AuthController {
private $userModel;
public function __construct() {
$this->userModel = new User();
}
public function register($name, $email, $password) {
if ($this->userModel->findByEmail($email)) {
return ['error' => 'Email already exists'];
}
$result = $this->userModel->register($name, $email, $password);
if ($result) {
$user = $this->userModel->findByEmail($email);
$_SESSION['user_id'] = $user['id'];
return ['success' => true, 'user' => $user];
}
return ['error' => 'Registration failed'];
}
public function login($email, $password) {
$user = $this->userModel->login($email, $password);
if ($user) {
$_SESSION['user_id'] = $user['id'];
return ['success' => true, 'user' => $user];
}
return ['error' => 'Invalid credentials'];
}
public function logout() {
session_destroy();
return ['success' => true];
}
public static function isAuthenticated() {
return isset($_SESSION['user_id']);
}
public static function getCurrentUserId() {
return $_SESSION['user_id'] ?? null;
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Controllers;
use App\Models\Project;
use App\Models\Task;
class ProjectController {
private $projectModel;
private $taskModel;
public function __construct() {
$this->projectModel = new Project();
$this->taskModel = new Task();
}
public function createProject($name, $description) {
$userId = AuthController::getCurrentUserId();
return $this->projectModel->create($name, $description, $userId);
}
public function getUserProjects() {
$userId = AuthController::getCurrentUserId();
return $this->projectModel->getUserProjects($userId);
}
public function getProjectDetails($projectId) {
$userId = AuthController::getCurrentUserId();
$project = $this->projectModel->getProjectById($projectId, $userId);
$tasks = $this->taskModel->getProjectTasks($projectId);
return [
'project' => $project,
'tasks' => $tasks
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Controllers;
use App\Models\Task;
class TaskController {
private $taskModel;
public function __construct() {
$this->taskModel = new Task();
}
public function createTask($name, $description, $projectId, $status = 'created') {
$userId = AuthController::getCurrentUserId();
return $this->taskModel->create($name, $description, $projectId, $userId, $status);
}
public function updateTaskStatus($taskId, $status) {
return $this->taskModel->updateTaskStatus($taskId, $status);
}
}

31
src/Models/Project.php Normal file
View File

@@ -0,0 +1,31 @@
<?php
namespace App\Models;
require_once __DIR__ . '/../../db.php';
class Project {
private $pdo;
public function __construct() {
global $pdo;
$this->pdo = $pdo;
}
public function create($name, $description, $userId) {
$stmt = $this->pdo->prepare("INSERT INTO projects (name, description, user_id) VALUES (?, ?, ?)");
$stmt->execute([$name, $description, $userId]);
return $this->pdo->lastInsertId();
}
public function getUserProjects($userId) {
$stmt = $this->pdo->prepare("SELECT * FROM projects WHERE user_id = ? ORDER BY created_at DESC");
$stmt->execute([$userId]);
return $stmt->fetchAll();
}
public function getProjectById($projectId, $userId) {
$stmt = $this->pdo->prepare("SELECT * FROM projects WHERE id = ? AND user_id = ?");
$stmt->execute([$projectId, $userId]);
return $stmt->fetch();
}
}

30
src/Models/Task.php Normal file
View File

@@ -0,0 +1,30 @@
<?php
namespace App\Models;
require_once __DIR__ . '/../../db.php';
class Task {
private $pdo;
public function __construct() {
global $pdo;
$this->pdo = $pdo;
}
public function create($name, $description, $projectId, $userId, $status = 'created') {
$stmt = $this->pdo->prepare("INSERT INTO tasks (name, description, project_id, user_id, status) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$name, $description, $projectId, $userId, $status]);
return $this->pdo->lastInsertId();
}
public function getProjectTasks($projectId) {
$stmt = $this->pdo->prepare("SELECT * FROM tasks WHERE project_id = ? ORDER BY created_at DESC");
$stmt->execute([$projectId]);
return $stmt->fetchAll();
}
public function updateTaskStatus($taskId, $status) {
$stmt = $this->pdo->prepare("UPDATE tasks SET status = ? WHERE id = ?");
return $stmt->execute([$status, $taskId]);
}
}

37
src/Models/User.php Normal file
View File

@@ -0,0 +1,37 @@
<?php
namespace App\Models;
require_once __DIR__ . '/../../db.php';
class User {
private $pdo;
public function __construct() {
global $pdo;
$this->pdo = $pdo;
}
public function register($name, $email, $password) {
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
$stmt = $this->pdo->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?)");
return $stmt->execute([$name, $email, $hashedPassword]);
}
public function login($email, $password) {
$stmt = $this->pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
return $user;
}
return false;
}
public function findByEmail($email) {
$stmt = $this->pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
return $stmt->fetch();
}
}