File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Controllers/ProfileController.php
Back
<?php /** * ProfileController * Handles Profile view & update, Avatar upload, and Password change */ require_once __DIR__ . '/../Core/Controller.php'; require_once __DIR__ . '/../Services/UserService.php'; require_once __DIR__ . '/../Models/UserSession.php'; require_once __DIR__ . '/../Helpers/Auth.php'; require_once __DIR__ . '/../Helpers/Session.php'; require_once __DIR__ . '/../Helpers/Url.php'; class ProfileController extends Controller { private UserService $userService; private UserSession $sessionModel; public function __construct() { $this->userService = new UserService(); $this->sessionModel = new UserSession(); } public function index(): void { $user = Auth::user(); $roles = Auth::roles(); // Calculate username cooldown $canChangeUsername = true; $usernameAvailableDate = null; if (!empty($user['username_changed_at'])) { $lastChanged = strtotime($user['username_changed_at']); $cooldownEnds = $lastChanged + (30 * 86400); if (time() < $cooldownEnds) { $canChangeUsername = false; $usernameAvailableDate = date('d/m/Y H:i', $cooldownEnds); } } $this->render('account/profile', [ 'pageTitle' => __('profile') . ' - CARGOO', 'user' => $user, 'roles' => $roles, 'canChangeUsername' => $canChangeUsername, 'usernameAvailableDate' => $usernameAvailableDate, 'activeTab' => 'profile' ], 'account'); } public function updateProfile(): void { $userId = Auth::id(); $result = $this->userService->updateProfile($userId, $_POST); if (!$result['success']) { if (!empty($result['errors'])) { foreach ($result['errors'] as $err) { Session::setFlash('danger', $err); } } else { Session::setFlash('danger', $result['message']); } $this->redirect('/account/profile'); } Session::setFlash('success', $result['message']); $this->redirect('/account/profile'); } public function updateAvatar(): void { $userId = Auth::id(); $file = $_FILES['avatar'] ?? null; $isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; if (!$file || empty($file['name'])) { if ($isAjax) { $this->json(['success' => false, 'message' => 'กรุณาเลือกไฟล์รูปภาพ']); return; } Session::setFlash('danger', 'กรุณาเลือกไฟล์รูปภาพ'); $this->redirect('/account/profile'); return; } $result = $this->userService->updateAvatar($userId, $file); if ($isAjax) { $this->json($result); return; } if (!$result['success']) { Session::setFlash('danger', $result['message']); } else { Session::setFlash('success', $result['message']); } $this->redirect('/account/profile'); } public function showSecurity(): void { $userId = Auth::id(); $user = Auth::user(); $activeSessions = $this->sessionModel->getActiveSessions($userId); $this->render('account/security', [ 'pageTitle' => __('security') . ' - CARGOO', 'user' => $user, 'activeSessions' => $activeSessions, 'activeTab' => 'security' ], 'account'); } public function changePassword(): void { $userId = Auth::id(); $currentPassword = $_POST['current_password'] ?? ''; $newPassword = $_POST['new_password'] ?? ''; $confirmPassword = $_POST['confirm_new_password'] ?? ''; $result = $this->userService->changePassword($userId, $currentPassword, $newPassword, $confirmPassword); if (!$result['success']) { if (!empty($result['errors'])) { foreach ($result['errors'] as $err) { Session::setFlash('danger', $err); } } else { Session::setFlash('danger', $result['message']); } $this->redirect('/account/security'); } Session::setFlash('success', $result['message']); $this->redirect('/account/security'); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.23 |
proxy
|
phpinfo
|
Settings