forked from projects/fipamo
ro
91aa2703b6
uploading new member avatar and background images weren't uploading to the correct location and the approprate files weren't being updated, so that was been fixed. the folks template in the init directory also needed be updated because the system was looking for 'avatar' instead of 'avi' which was resulting in some mismatch calls that were resulting in not found errors. the variable is now 'avatar' everywhere for the sake of consistency.
122 lines
3.5 KiB
PHP
122 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories;
|
|
|
|
use App\Services\Assets\DocService;
|
|
use App\Interfaces\MemberRepositoryInterface;
|
|
use ReallySimpleJWT\Token;
|
|
use Carbon\Carbon;
|
|
|
|
use function _\find;
|
|
use function _\findIndex;
|
|
|
|
class MemberRepository implements MemberRepositoryInterface
|
|
{
|
|
protected $folks;
|
|
protected $docs;
|
|
|
|
public function __construct(DocService $docService)
|
|
{
|
|
$this->docs = $docService;
|
|
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 getAll()
|
|
{
|
|
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($member)
|
|
{
|
|
$index = findIndex($this->folks, ['id' => $member->id]);
|
|
$this->folks[$index]['handle'] = $member->handle;
|
|
$this->folks[$index]['email'] = $member->email;
|
|
$this->folks[$index]['avatar'] = $member->avatar;
|
|
$this->folks[$index]['updated'] = Carbon::now();
|
|
//save new folks file
|
|
$this->docs::writeSettings($this->folks, env('FOLKS_PATH'));
|
|
//update session
|
|
session()->put('member', $this->folks[$index]);
|
|
}
|
|
|
|
public function auth($request)
|
|
{
|
|
//suth stuff
|
|
$folks = $this->folks;
|
|
$found = $this->getByHandle($request->handle);
|
|
if ($found) {
|
|
if (password_verify($request->password, $found['password'])) {
|
|
$member = [
|
|
'id' => $found['id'],
|
|
'handle' => $found['handle'],
|
|
'email' => $found['email'],
|
|
'role' => $found['role'],
|
|
'avatar' => $found['avatar'],
|
|
'key' => $found['key'],
|
|
'secret' => $found['secret'],
|
|
];
|
|
|
|
$token = Token::create(
|
|
$found['key'],
|
|
$found['secret'],
|
|
time() + 3600,
|
|
'localhost'
|
|
); //expires in an hour
|
|
$form_token = md5(uniqid(microtime(), true));
|
|
$request->session()->put('member', $member);
|
|
$request->session()->put('token', $token);
|
|
$request->session()->put('form_token', $form_token);
|
|
return ['status' => true, 'message' => 'HEY WELCOME BACK'];
|
|
//DO SESSION STUFF
|
|
} else {
|
|
return ['status' => false, 'message' => 'CHECK THAT PASSWORD'];
|
|
//RETURN ERROR
|
|
}
|
|
} else {
|
|
return ['status' => false, 'message' => 'CHECK THAT HANDLE'];
|
|
}
|
|
}
|
|
|
|
public static function status()
|
|
{
|
|
if (session('member') !== null) {
|
|
if (
|
|
Token::validate(session('token'), session('member')['secret']) &&
|
|
Token::validateExpiration(session('token'), session('member')['secret'])
|
|
) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|