mirror of
https://koodu.h-i.works/projects/thebadspace
synced 2025-05-06 14:41:02 -05:00
after the site is installed and the DB set up, there needed to be a way to create the first account that will be used as the admin to access the den, the admin section of tbs the system makes a check to see if this account exists and if there isn't one present, it shows the admin account set up screen on the index. it goes away after the account is created.
146 lines
4.7 KiB
PHP
146 lines
4.7 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories;
|
|
|
|
use App\Models\Member;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Ramsey\Uuid\Uuid;
|
|
use Carbon\Carbon;
|
|
|
|
class MemberRepository
|
|
{
|
|
protected $model;
|
|
|
|
public function __construct(Member $model)
|
|
{
|
|
$this->model = $model;
|
|
}
|
|
|
|
public function getAll()
|
|
{
|
|
return $this->model::all();
|
|
}
|
|
|
|
public function get($uuid)
|
|
{
|
|
return $this->model::where("uuid", $uuid)->first();
|
|
}
|
|
|
|
public function edit($request)
|
|
{
|
|
//get member to edit
|
|
$member = $this->get($request->id);
|
|
|
|
//save new avi if available
|
|
$publicPath = '../public/';
|
|
$refPath = 'assets/images/members/' . $member->uuid;
|
|
if ($request->hasfile("fresh_avi")) {
|
|
$file = $request->fresh_avi;
|
|
if (!is_dir($publicPath . $refPath)) {
|
|
mkdir($publicPath . $refPath, 0755, true);
|
|
}
|
|
$filename = urlencode($file->getClientOriginalName());
|
|
$file->move($publicPath . $refPath, $filename);
|
|
$freshAvi = '/' . $refPath . '/' . $filename;
|
|
$member->avatar = $freshAvi;
|
|
}
|
|
|
|
$member->handle = $request->handle;
|
|
$member->email = $request->email;
|
|
$member->pronoun = $request->pronouns;
|
|
$member->role = $request->role;
|
|
$member->active = $request->status;
|
|
|
|
if ($member->save()) {
|
|
return ['status' => true, 'message' => "Member Editited"];
|
|
} else {
|
|
return ['status' => false, 'message' => "Member Not Editited"];
|
|
}
|
|
}
|
|
|
|
public function add($request)
|
|
{
|
|
$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"];
|
|
}
|
|
|
|
//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!"];
|
|
} else {
|
|
return ['status' => false, 'message' => "Uh oh, New Friend Delay!"];
|
|
}
|
|
}
|
|
|
|
public function editProfile($request)
|
|
{
|
|
//get member to edit
|
|
$member = $this->get($request->id);
|
|
|
|
//save new avi if available
|
|
$publicPath = '../public/';
|
|
$refPath = 'assets/images/members/' . $member->uuid;
|
|
if ($request->hasfile("fresh_avi")) {
|
|
$file = $request->fresh_avi;
|
|
if (!is_dir($publicPath . $refPath)) {
|
|
mkdir($publicPath . $refPath, 0755, true);
|
|
}
|
|
$filename = urlencode($file->getClientOriginalName());
|
|
$file->move($publicPath . $refPath, $filename);
|
|
$freshAvi = '/' . $refPath . '/' . $filename;
|
|
$member->avatar = $freshAvi;
|
|
}
|
|
//changing password
|
|
if (isset($request->fresh_pass) && $request->fresh_pass !== '') {
|
|
if ($request->fresh_pass === $request->fresh_pass_confirm) {
|
|
$member->password = Hash::make($request->fresh_pass);
|
|
} else {
|
|
return ['status' => false, 'message' => "Passwords Do Not Match"];
|
|
}
|
|
}
|
|
|
|
$member->handle = $request->handle;
|
|
$member->email = $request->email;
|
|
$member->pronoun = $request->pronouns;
|
|
|
|
if ($member->save()) {
|
|
return ['status' => true, 'message' => "Profile Editited"];
|
|
} else {
|
|
return ['status' => false, 'message' => "Profile Not Editited"];
|
|
}
|
|
}
|
|
}
|