mirror of
https://github.com/danielbrendel/hortusfox-web.git
synced 2026-05-25 01:29:39 -05:00
190 lines
4.2 KiB
PHP
190 lines
4.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Class IndexController
|
|
*
|
|
* Gateway to all main actions
|
|
*/
|
|
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();
|
|
}
|
|
|
|
if (app('owm_enable')) {
|
|
try {
|
|
$weather = WeatherModule::today();
|
|
} catch (\Exception $e) {
|
|
$weather = null;
|
|
}
|
|
}
|
|
|
|
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,
|
|
'calendar_sv_date_from' => date('Y-m-d'),
|
|
'calendar_sv_date_till' => date('Y-m-d', strtotime('+1 week')),
|
|
'weather' => $weather
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Handles URL: /auth
|
|
*
|
|
* @param Asatru\Controller\ControllerArg $request
|
|
* @return Asatru\View\ViewHandler|Asatru\View\RedirectHandler
|
|
*/
|
|
public function auth($request)
|
|
{
|
|
if (auth()) {
|
|
return redirect('/');
|
|
}
|
|
|
|
$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);
|
|
$redirect = $request->params()->query('redirect', null);
|
|
|
|
UserModel::login($email, $password);
|
|
|
|
if ((is_string($redirect)) && (strlen($redirect) > 0)) {
|
|
return redirect($redirect);
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|