implemented member repo class

a class for members was needed for long term handling of member
functions like login, update, status checking, etc so that class was
created and the AuthService class was removed as it was redundant and
it's functionaity moved to the member class
This commit is contained in:
ro 2024-05-13 12:06:05 -06:00
parent 36d04c8f68
commit 064407aa88
No known key found for this signature in database
GPG key ID: 29B551CDBD4D3B50
11 changed files with 115 additions and 71 deletions

View file

@ -3,22 +3,24 @@
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Services\AuthService;
use App\Interfaces\MemberRepositoryInterface;
use Illuminate\Http\Request;
class AuthAPIController extends Controller
{
protected $member;
public function __construct(
AuthService $authService
MemberRepositoryInterface $memberRepo
) {
$this->auth = $authService;
$this->member = $memberRepo;
}
public function status(Request $request)
{
$result = [];
$data = json_decode($request->getContent());
if ($this->auth::status()) {
if ($this->member::status()) {
$result = [
'message' => 'Authorized',
'type' => 'apiUseAuthorized',

View file

@ -7,7 +7,7 @@ use Illuminate\Http\Request;
use App\Services\SettingsService;
use App\Services\RenderService;
use App\Services\MaintenanceService;
use App\Services\AuthService;
use App\Interfaces\MemberRepositoryInterface;
use App\Services\AssetService;
class SettingsAPIController extends Controller
@ -15,20 +15,20 @@ class SettingsAPIController extends Controller
protected $settings;
protected $render;
protected $mainteance;
protected $auth;
protected $member;
protected $assets;
public function __construct(
SettingsService $settingsService,
RenderService $renderService,
MaintenanceService $maintenanceService,
AuthService $authService,
MemberRepositoryInterface $memberRepo,
AssetService $assetService
) {
$this->settings = $settingsService;
$this->render = $renderService;
$this->maintenance = $maintenanceService;
$this->auth = $authService;
$this->member = $memberRepo;
$this->assets = $assetService;
}
@ -60,7 +60,7 @@ class SettingsAPIController extends Controller
public function downloadBackup(Request $request)
{
if ($this->auth::status()) {
if ($this->member::status()) {
$latest = $this->settings->getGlobal()['last_backup'];
$file = 'backup-' . $latest . '.zip';
return response()->download('../content/backups/' . $file, $file, ['Content-Type: application/zip']);

View file

@ -3,15 +3,17 @@
namespace App\Http\Controllers;
use Symfony\Component\HttpFoundation\Response;
use App\Services\Data\AuthService;
use App\Interfaces\MemberRepositoryInterface;
use Illuminate\Http\Request;
class AuthController extends Controller
{
protected $member;
public function __construct(
AuthService $authService
MemberRepositoryInterface $memberRepository
) {
$this->auth = $authService;
$this->member = $memberRepository;
}
public function enter(Request $request): Response
@ -24,7 +26,7 @@ class AuthController extends Controller
]);
if ($credentials) {
$result = $this->auth->check($request);
$result = $this->member->auth($request);
if ($result['status']) {
//$request->session()->regenerate();
return redirect()->intended('dashboard/start');

View file

@ -3,25 +3,25 @@
namespace App\Http\Controllers;
use App\Interfaces\PageRepositoryInterface;
use App\Services\Data\AuthService;
use App\Interfaces\MemberRepositoryInterface;
use App\Services\Data\ThemeService;
use App\Services\Data\SortingService;
class DashController extends Controller
{
protected PageRepositoryInterface $pages;
protected AuthService $auth;
protected MemberRepositoryInterface $member;
protected ThemeService $themes;
protected SortingService $sort;
public function __construct(
PageRepositoryInterface $pageRepository,
AuthService $authService,
MemberRepositoryInterface $memberRepo,
ThemeService $themeService,
SortingService $sortingService
) {
$this->pages = $pageRepository;
$this->auth = $authService;
$this->member = $memberRepo;
$this->themes = $themeService;
$this->sort = $sortingService;
}
@ -54,11 +54,11 @@ class DashController extends Controller
public function login()
{
if ($this->auth::status()) {
if ($this->member::status()) {
return redirect('dashboard');
} else {
return view('back.login', [
"status" => $this->auth::status(),
"status" => $this->member::status(),
"title" => "Hi!"
]);
}
@ -67,11 +67,11 @@ class DashController extends Controller
public function start()
{
$result = [];
if ($this->auth::status()) {
if ($this->member::status()) {
$result = $this->pages->getGroup(1, 4);
}
return view('back.start', [
"status" => $this->auth::status(),
"status" => $this->member::status(),
"result" => $result,
"title" => "Start"
]);
@ -80,7 +80,7 @@ class DashController extends Controller
public function book($pageFilter = 'all', $pageNum = 1)
{
$result = [];
if ($this->auth::status()) {
if ($this->member::status()) {
$result = $this->pages->getGroup($pageNum, 4, $pageFilter);
}
return view('back.book', [
@ -101,7 +101,7 @@ class DashController extends Controller
$mode == 'edit' ? $views = $this->themes->getCustomViews($page['layout']) : $views[] = 'page';
return view('back.page', [
"status" => $this->auth::status(),
"status" => $this->member::status(),
"mode" => $mode,
"page" => $page,
"views" => $views,

View file

@ -5,7 +5,6 @@ namespace App\Http\Controllers;
use App\Interfaces\PageRepositoryInterface;
use App\Services\Assets\AssetService;
use App\Services\Data\SettingsService;
use App\Services\Data\AuthService;
use App\Services\Data\SortingService;
use function _\find;
@ -13,7 +12,6 @@ use function _\find;
class FrontController extends Controller
{
protected $settings;
protected $auth;
protected PageRepositoryInterface $pages;
protected AssetService $assets;
protected SortingService $sort;
@ -21,13 +19,11 @@ class FrontController extends Controller
public function __construct(
PageRepositoryInterface $pageRepository,
SettingsService $settingsService,
AuthService $authService,
AssetService $assetService,
SortingService $sortService,
) {
$this->pages = $pageRepository;
$this->settings = $settingsService;
$this->auth = $authService;
$this->assets = $assetService;
$this->sort = $sortService;
}

View file

@ -2,7 +2,7 @@
namespace App\Http\Controllers;
use App\Services\Data\AuthService;
use App\Interfaces\MemberRepositoryInterface;
use Illuminate\Http\Request;
class RouteController extends Controller
@ -11,20 +11,20 @@ class RouteController extends Controller
protected $gate;
protected $theme;
protected $front;
protected $auth;
protected $member;
public function __construct(
DashController $dashController,
AuthController $authController,
ThemeController $themeController,
FrontController $frontController,
AuthService $authService,
MemberRepositoryInterface $memberRepo,
) {
$this->dash = $dashController;
$this->gate = $authController;
$this->theme = $themeController;
$this->front = $frontController;
$this->auth = $authService;
$this->member = $memberRepo;
}
public function get($first = null, $second = null, $third = null, $fourth = null)
@ -32,14 +32,14 @@ class RouteController extends Controller
if (isset($first) && !is_numeric($first)) {
switch ($first) {
case 'dashboard':
if ($this->auth::status()) {
if ($this->member::status()) {
return $this->dash->init($second, $third, $fourth);
} else {
return $this->dash->login();
}
break;
case 'theme':
if ($this->auth::status()) {
if ($this->member::status()) {
if (isset($second)) {
return $this->theme->getView($third);
} else {

View file

@ -4,27 +4,27 @@ namespace App\Http\Controllers;
use App\Interfaces\PageRepositoryInterface;
use App\Services\Assets\AssetService;
use App\Services\Data\AuthService;
use App\Interfaces\MemberRepositoryInterface;
use App\Services\Data\SortingService;
use App\Services\Data\ThemeService;
class ThemeController extends Controller
{
protected PageRepositoryInterface $pages;
protected AuthService $auth;
protected MemberRepositoryInterface $member;
protected AssetService $assets;
protected SortingService $sort;
protected ThemeService $themes;
public function __construct(
PageRepositoryInterface $pageRepository,
AuthService $authService,
MemberRepositoryInterface $memberRepo,
AssetService $assetService,
SortingService $sortService,
ThemeService $themeService,
) {
$this->pages = $pageRepository;
$this->auth = $authService;
$this->member = $memberRepo;
$this->assets = $assetService;
$this->sort = $sortService;
$this->themes = $themeService;
@ -32,9 +32,9 @@ class ThemeController extends Controller
public function start()
{
if ($this->auth::status()) {
if ($this->member::status()) {
return view('theme.start', [
"status" => $this->auth::status(),
"status" => $this->member::status(),
"title" => "Fipamo Theme Kit",
"pages" => $this->themes->getCustomViews('page')
]);
@ -73,7 +73,7 @@ class ThemeController extends Controller
$page = $this->pages->getById('F4429D34-25E7-4CA9-9B0A-742810277505');
$pageData = $this->sort->page($page);
}
if ($this->auth::status()) {
if ($this->member::status()) {
return view($template, $pageData);
} else {
return redirect('dashboard/start');

View file

@ -0,0 +1,22 @@
<?php
namespace App\Interfaces;
interface MemberRepositoryInterface
{
public function getAll();
public function getByID($id);
public function getByHandle($handle);
public function delete($id);
public function create($member);
public function update($id);
public function auth($request);
public static function status();
}

View file

@ -6,6 +6,8 @@ use Illuminate\Support\ServiceProvider;
//Repos
use App\Repositories\PageRepository;
use App\Interfaces\PageRepositoryInterface;
use App\Repositories\MemberRepository;
use App\Interfaces\MemberRepositoryInterface;
//Asset Services
use App\Services\Assets\AssetService;
use App\Services\Assets\DocService;
@ -13,7 +15,6 @@ use App\Services\Assets\FileUploadService;
use App\Services\Assets\RenderService;
//Data Services
use App\Services\Data\SettingsService;
use App\Services\Data\AuthService;
use App\Services\Data\ContentService;
use App\Services\Data\PaginateService;
use App\Services\Data\ThemeService;
@ -34,10 +35,6 @@ class FipamoServiceProvider extends ServiceProvider
return new SettingsService(new DocService(), new ContentService());
});
$this->app->bind(AuthService::class, function ($app) {
return new AuthService(new SettingsService(new DocService(), new ContentService()));
});
$this->app->bind(ContentService::class, function ($app) {
return new ContentService();
});
@ -103,5 +100,6 @@ class FipamoServiceProvider extends ServiceProvider
public function boot(): void
{
$this->app->bind(PageRepositoryInterface::class, PageRepository::class);
$this->app->bind(MemberRepositoryInterface::class, MemberRepository::class);
}
}

View file

@ -1,25 +1,62 @@
<?php
namespace App\Services\Data;
namespace App\Repositories;
use App\Interfaces\MemberRepositoryInterface;
use ReallySimpleJWT\Token;
use function _\find;
class AuthService
class MemberRepository implements MemberRepositoryInterface
{
protected $config;
protected $request;
protected $folks;
public function __construct(SettingsService $config)
public function __construct()
{
$this->config = $config;
if (file_exists(env('FOLKS_PATH'))) {
$this->folks = json_decode(file_get_contents(env('FOLKS_PATH')), true);
} else {
$this->folks = json_decode(file_get_contents('../content/init/folks-template.json'), true);
}
}
public function check($request)
public function getAll()
{
$folks = $this->config->getFolks();
$found = find($folks, ['handle' => $request->handle]);
return $this->$folks;
}
public function getById($id)
{
$member = find($this->folks, ['id' => $id]);
return $member;
}
public function getByHandle($handle)
{
$member = find($this->folks, ['handle' => $handle]);
return $member;
}
public function delete($id)
{
//delete member stuff
}
public function create($member)
{
//make new member
}
public function update($id)
{
//update member data
}
public function auth($request)
{
//suth stuff
$folks = $this->folks;
$found = $this->getByHandle($request->handle);
if ($found) {
if (password_verify($request->password, $found['password'])) {
$member = [

View file

@ -10,20 +10,12 @@ use function _\find;
class SettingsService
{
protected $settings;
protected $folks;
protected $tags;
protected $docs;
protected $contents;
public function __construct(DocService $docService, ContentService $contentService)
{
//if config files aren't avaiable, load templates
if (file_exists(env('FOLKS_PATH'))) {
$this->folks = json_decode(file_get_contents(env('FOLKS_PATH')), true);
} else {
$this->folks = json_decode(file_get_contents('../content/init/folks-template.json'), true);
}
if (file_exists(env('TAGS_PATH'))) {
$this->tags = json_decode(file_get_contents(env('TAGS_PATH')), true);
} else {
@ -74,11 +66,6 @@ class SettingsService
return $this->tags;
}
public function getFolks()
{
return $this->folks;
}
public function updatePageIndex()
{
$this->settings = $this->loadSettings();