diff --git a/app/Http/Controllers/FrontIndexController.php b/app/Http/Controllers/FrontIndexController.php
index 0a94782..f61943a 100644
--- a/app/Http/Controllers/FrontIndexController.php
+++ b/app/Http/Controllers/FrontIndexController.php
@@ -6,39 +6,49 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Repositories\LocationRepository;
use App\Repositories\SourceRepository;
+use App\Repositories\MemberRepository;
use App\Services\PaginationService;
class FrontIndexController extends Controller
{
protected $location;
protected $source;
+ protected $member;
protected $pagination;
public function __construct(
LocationRepository $locationRepository,
SourceRepository $sourceRepository,
+ MemberRepository $memberRepository,
PaginationService $paginationService
) {
$this->location = $locationRepository;
$this->source = $sourceRepository;
+ $this->member = $memberRepository;
$this->pagination = $paginationService;
}
public function start()
{
- //for fresh installs that dont have any source data yet
- $latest_update = 'Never Run';
- if(count($this->location->getRecent()) != 0)
- {
- $latest_update = $this->location->getRecent()[0]->updated_at->format('Y M d');
+ //check to see if there are any accounts
+ if (count($this->member->getAll()) == 0) {
+ return view('back.member', [
+ 'mode' => 'admin-create',
+ 'title' => "Welcome, welcome"]);
+ } else {
+ //for fresh installs that dont have any source data yet
+ $latest_update = 'Never Run';
+ if (count($this->location->getRecent()) != 0) {
+ $latest_update = $this->location->getRecent()[0]->updated_at->format('Y M d');
+ }
+ return view('front.index', [
+ 'count' => count($this->location->getActiveLocations()),
+ 'sources' => count($this->source->getActive()),
+ 'recent' => $this->location->getRecent(),
+ 'latest_date' => $latest_update,
+ 'title' => "The Bad Space"
+ ]);
}
- return view('front.index', [
- 'count' => count($this->location->getActiveLocations()),
- 'sources' => count($this->source->getActive()),
- 'recent' => $this->location->getRecent(),
- 'latest_date' => $latest_update,
- 'title' => "The Bad Space"
- ]);
}
public function indexSearch(Request $request)
diff --git a/app/Http/Controllers/MemberController.php b/app/Http/Controllers/MemberController.php
index 9458ba9..2000dfb 100644
--- a/app/Http/Controllers/MemberController.php
+++ b/app/Http/Controllers/MemberController.php
@@ -151,4 +151,32 @@ class MemberController extends Controller
return back()->withErrors(['Nah, you can\'t do this. Wrong permissions.']);
}
}
+
+ public function adminCreate(Request $request)
+ {
+ //should only be run of no members exist
+ if (count($this->member->getAll()) == 0) {
+ $token = csrf_token();
+ $valid = $request->validate([
+ 'handle' => ['required'],
+ 'email' => ['required'],
+ 'pronouns' => ['required'],
+ 'fresh_pass' => ['required'],
+ 'fresh_pass_confirm' => ['required'],
+ ]);
+
+ if ($valid) {
+ $response = $this->member->add($request);
+ if ($response['status'] == true) {
+ return redirect('/den/member')->with('message', $response['message']);
+ } else {
+ return back()->withErrors([$response['message']]);
+ }
+ } else {
+ return back()->withErrors(['Misssing some required info, homie.']);
+ }
+ } else {
+ return back()->withErrors(['Shame on you for even trying that.']);
+ }
+ }
}
diff --git a/app/Repositories/MemberRepository.php b/app/Repositories/MemberRepository.php
index bbb7305..2c0a1ab 100644
--- a/app/Repositories/MemberRepository.php
+++ b/app/Repositories/MemberRepository.php
@@ -60,25 +60,43 @@ class MemberRepository
public function add($request)
{
- $password = [];
+ $password = [];
+ $newFriend = [];
if ($request->fresh_pass === $request->fresh_pass_confirm) {
$password = Hash::make($request->fresh_pass);
} else {
return ['status' => false, 'message' => "Passwords Do Not Match"];
}
- $newFriend = $this->model::create([
- 'uuid' => Uuid::uuid4(),
- 'avatar' => 'default-member-avatar',
- 'handle' => $request->handle,
- 'email' => $request->email,
- 'pronoun' => $request->pronouns,
- 'role' => $request->role,
- 'active' => $request->status,
- 'password' => $password,
- 'created_at' => Carbon::now(),
- 'last_login' => Carbon::now(),
- ]);
+ //if role paramter is set, not an admin add
+ if (isset($request->role)) {
+ $newFriend = $this->model::create([
+ 'uuid' => Uuid::uuid4(),
+ 'avatar' => 'default-member-avatar',
+ 'handle' => $request->handle,
+ 'email' => $request->email,
+ 'pronoun' => $request->pronouns,
+ 'role' => $request->role,
+ 'active' => $request->status,
+ 'password' => $password,
+ 'created_at' => Carbon::now(),
+ 'last_login' => Carbon::now(),
+ ]);
+ } else {
+ //set up admin
+ $newFriend = $this->model::create([
+ 'uuid' => Uuid::uuid4(),
+ 'avatar' => 'default-member-avatar',
+ 'handle' => $request->handle,
+ 'email' => $request->email,
+ 'pronoun' => $request->pronouns,
+ 'role' => 0,
+ 'active' => true,
+ 'password' => $password,
+ 'created_at' => Carbon::now(),
+ 'last_login' => Carbon::now(),
+ ]);
+ }
if ($newFriend) {
return ['status' => true, 'message' => "New Friend Made!"];
diff --git a/resources/views/back/member.blade.php b/resources/views/back/member.blade.php
index 1f3b1de..44803de 100644
--- a/resources/views/back/member.blade.php
+++ b/resources/views/back/member.blade.php
@@ -2,38 +2,51 @@
@section('title', 'Den | Member Admin')
- @php
- if($mode == 'member-create')
- {
- $action_url = '/den/member/create';
- }else{
- $action_url = '/den/member/edit';
- }
- @endphp
- @section('main-content')
-
-
- @switch($mode)
- @case('member-edit')
- Edit Info for {{$member->handle}}
- @include('forms.member-edit')
-
- @break
+ @php
+ switch($mode)
+ {
+ case 'member-create':
+ $action_url = '/den/member/create';
+ break;
+ case 'member-edit':
+ $action_url = '/den/member/edit';
+ break;
+ case 'admin-create':
+ $action_url = '/den/member/admin-create';
+ break;
+ }
+ @endphp
+ @section('main-content')
+
+
+ @switch($mode)
+ @case('member-edit')
+ Edit Info for {{$member->handle}}
+ @include('forms.member-edit')
+
+ @break
- @case('member-create')
- New Member Info
- @include('forms.member-edit')
-
- @break
+ @case('member-create')
+ New Member Info
+ @include('forms.member-edit')
+
+ @break
- @default
- Member Listing
- @foreach($members as $member)
- {{$member->handle}}
- @endforeach
- Add Member
- Make a new friend
- @endswitch
-
-
- @endsection
\ No newline at end of file
+ @case('admin-create')
+ Make your first account
+ *This will be your administrator account.
+ @include('forms.member-edit')
+
+ @break
+
+ @default
+ Member Listing
+ @foreach($members as $member)
+ {{$member->handle}}
+ @endforeach
+ Add Member
+ Make a new friend
+ @endswitch
+
+
+ @endsection
\ No newline at end of file
diff --git a/resources/views/forms/member-edit.blade.php b/resources/views/forms/member-edit.blade.php
index 3d8c7c2..5d1942b 100644
--- a/resources/views/forms/member-edit.blade.php
+++ b/resources/views/forms/member-edit.blade.php
@@ -1,61 +1,74 @@
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 9c65116..74a4b84 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -28,6 +28,7 @@ Route::get("/location/{uuid}", [FrontIndexController::class, 'location']);
Route::get("/appeals", [FrontIndexController::class, 'appeals']);
Route::post("/search", [FrontIndexController::class, 'indexSearch']);
Route::post("/appeal", [AppealController::class, 'sendAppeal']);
+Route::post("/den/member/admin-create", [MemberController::class, 'adminCreate']);
//exports
Route::get("/exports", [ExportController::class, 'exportIndex']);