Files
hortusfox-web/app/controller/index.php
Daniel Brendel 46032edad5 Resolves #111
2024-01-30 15:50:52 +01:00

174 lines
3.8 KiB
PHP

<?php
/*
Asatru PHP - Example controller
Add here all your needed routes implementations related to 'index'.
*/
/**
* Index controller
*/
class IndexController extends BaseController {
const INDEX_LAYOUT = 'layout';
/**
* Perform base initialization
*
* @return void
*/
public function __construct()
{
parent::__construct(self::INDEX_LAYOUT);
}
/**
* Handles URL: /
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\ViewHandler
*/
public function index($request)
{
$user = UserModel::getAuthUser();
$locs = LocationsModel::getAll();
$warning_plants = PlantsModel::getWarningPlants();
$overdue_tasks = TasksModel::getOverdueTasks();
$log = LogModel::getHistory();
$stats = UtilsModule::getStats();
$upcoming_tasks_overview = TasksModel::getTasks(false, 4);
if ($user->get('show_plants_aoru')) {
$last_plants_list = PlantsModel::getLastAddedPlants();
} else {
$last_plants_list = PlantsModel::getLastAuthoredPlants();
}
return parent::view(['content', 'index'], [
'user' => $user,
'warning_plants' => $warning_plants,
'overdue_tasks' => $overdue_tasks,
'locations' => $locs,
'log' => $log,
'stats' => $stats,
'upcoming_tasks_overview' => $upcoming_tasks_overview,
'last_plants_list' => $last_plants_list
]);
}
/**
* Handles URL: /auth
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\ViewHandler
*/
public function auth($request)
{
$view = new Asatru\View\ViewHandler();
$view->setLayout('auth');
return $view;
}
/**
* Handles URL: /login
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\RedirectHandler
*/
public function login($request)
{
try {
$email = $request->params()->query('email', null);
$password = $request->params()->query('password', null);
UserModel::login($email, $password);
return redirect('/');
} catch (\Exception $e) {
FlashMessage::setMsg('error', $e->getMessage());
return back();
}
}
/**
* Handles URL: /logout
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\RedirectHandler
*/
public function logout($request)
{
try {
UserModel::logout();
return redirect('/');
} catch (\Exception $e) {
FlashMessage::setMsg('error', $e->getMessage());
return back();
}
}
/**
* Handles URL: /password/restore
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\RedirectHandler
*/
public function restore_password($request)
{
try {
$email = $request->params()->query('email', null);
UserModel::restorePassword($email);
FlashMessage::setMsg('success', __('app.restore_password_info'));
return redirect('/');
} catch (\Exception $e) {
FlashMessage::setMsg('error', $e->getMessage());
return back();
}
}
/**
* Handles URL: /password/reset
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\ViewHandler
*/
public function view_reset_password($request)
{
$token = $request->params()->query('token');
return view('pwreset', [], ['token' => $token]);
}
/**
* Handles URL: /password/reset
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\RedirectHandler
*/
public function reset_password($request)
{
try {
$token = $request->params()->query('token', null);
$password = $request->params()->query('password', null);
$password_confirmation = $request->params()->query('password_confirmation', null);
if ($password !== $password_confirmation) {
throw new \Exception(__('app.password_mismatch'));
}
UserModel::resetPassword($token, $password);
return redirect('/');
} catch (\Exception $e) {
FlashMessage::setMsg('error', $e->getMessage());
return back();
}
}
}