diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 00116f0..f92138f 100755 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -6,6 +6,33 @@ use phpOMS\Account\PermissionType; use phpOMS\Router\RouteVerb; return [ + '^.*/login(\?.*|$)' => [ + [ + 'dest' => '\Modules\Admin\Controller\ApiController:apiLogin', + 'verb' => RouteVerb::SET, + 'permission' => [ + ], + ], + ], + + '^.*/logout(\?.*|$)' => [ + [ + 'dest' => '\Modules\Admin\Controller\ApiController:apiLogout', + 'verb' => RouteVerb::SET, + 'permission' => [ + ], + ], + ], + + '^.*/forgott(\?.*|$)' => [ + [ + 'dest' => '\Modules\Admin\Controller\ApiController:apiForgott', + 'verb' => RouteVerb::SET, + 'permission' => [ + ], + ], + ], + '^.*/admin/settings(\?.*|$)' => [ [ 'dest' => '\Modules\Admin\Controller\ApiController:apiSettingsSet', diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 582f914..a832ada 100755 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -6,6 +6,15 @@ use phpOMS\Account\PermissionType; use phpOMS\Router\RouteVerb; return [ + '^.*/forgott.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller\BackendController:viewForgott', + 'verb' => RouteVerb::GET, + 'permission' => [ + ], + ], + ], + '^.*/admin/settings/general.*$' => [ [ 'dest' => '\Modules\Admin\Controller\BackendController:viewSettingsGeneral', diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 9112e70..af7d17a 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -54,6 +54,10 @@ use phpOMS\Uri\HttpUri; use phpOMS\Utils\Parser\Markdown\Markdown; use phpOMS\Validation\Network\Email; use phpOMS\Version\Version; +use phpOMS\Auth\LoginReturnType; +use phpOMS\Model\Message\Notify; +use phpOMS\Model\Message\Reload; +use phpOMS\Model\Message\NotifyType; /** * Admin controller class. @@ -73,6 +77,83 @@ use phpOMS\Version\Version; */ final class ApiController extends Controller { + /** + * Api method to login + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiLogin(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true); + + $login = AccountMapper::login((string) ($request->getData('user') ?? ''), (string) ($request->getData('pass') ?? '')); + + if ($login >= LoginReturnType::OK) { + $this->app->sessionManager->set('UID', $login, true); + $this->app->sessionManager->save(); + $response->set($request->getUri()->__toString(), new Reload()); + } else { + $response->set($request->getUri()->__toString(), new Notify( + 'Login failed due to wrong login information', + NotifyType::INFO + )); + } + } + + /** + * Api method to login + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiLogout(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true); + + $this->app->sessionManager->remove('UID'); + $this->app->sessionManager->save(); + + $response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true); + $response->set($request->getUri()->__toString(), [ + 'status' => NotificationLevel::OK, + 'title' => 'Logout successfull', + 'message' => 'You are redirected to the login page', + 'response' => null, + ]); + } + + /** + * Api method to login + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiForgott(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + } + /** * Api method to get settings * diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 0243c5f..d51b082 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -45,6 +45,22 @@ use phpOMS\Views\View; */ final class BackendController extends Controller { + /** + * Method which shows the password forgotten + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return RenderableInterface Response can be rendered + * + * @since 1.0.0 + */ + public function viewForgott(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface + { + return new View(); + } + /** * Method which generates the general settings view. *