forked from projects/fipamo
ro
8c375e6ba1
setting sync is working but member data was not being updated in the folks file or in the current active session, so that's been addressed still need to turn on avatar updating as well, but that is tied to updating the settings page, so that will be handled when image uploads for that area are reactivated
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)
|
|
{
|
|
//TODO: need to add member avatar updating
|
|
$index = findIndex($this->folks, ['id' => $member->id]);
|
|
$this->folks[$index]['handle'] = $member->handle;
|
|
$this->folks[$index]['email'] = $member->email;
|
|
$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['avi'],
|
|
'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;
|
|
}
|
|
}
|
|
}
|