Deploy from Lumerel
This commit is contained in:
54
src/Controllers/AuthController.php
Normal file
54
src/Controllers/AuthController.php
Normal 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;
|
||||
}
|
||||
}
|
||||
36
src/Controllers/ProjectController.php
Normal file
36
src/Controllers/ProjectController.php
Normal 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
|
||||
];
|
||||
}
|
||||
}
|
||||
21
src/Controllers/TaskController.php
Normal file
21
src/Controllers/TaskController.php
Normal 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
31
src/Models/Project.php
Normal 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
30
src/Models/Task.php
Normal 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
37
src/Models/User.php
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user