1
0
Fork 0

Update AccountController

This commit is contained in:
Daniel Supernault 2019-04-07 21:08:57 -06:00
parent 77ee80865a
commit 0ff56bbe35
No known key found for this signature in database
GPG Key ID: 0DEF1C662C9033F7
1 changed files with 110 additions and 6 deletions

View File

@ -128,7 +128,7 @@ class AccountController extends Controller
} }
} }
public function fetchNotifications($id) public function fetchNotifications(int $id)
{ {
$key = config('cache.prefix').":user.{$id}.notifications"; $key = config('cache.prefix').":user.{$id}.notifications";
$redis = Redis::connection(); $redis = Redis::connection();
@ -167,14 +167,14 @@ class AccountController extends Controller
public function mute(Request $request) public function mute(Request $request)
{ {
$this->validate($request, [ $this->validate($request, [
'type' => 'required|string', 'type' => 'required|alpha_dash',
'item' => 'required|integer|min:1', 'item' => 'required|integer|min:1',
]); ]);
$user = Auth::user()->profile; $user = Auth::user()->profile;
$type = $request->input('type'); $type = $request->input('type');
$item = $request->input('item'); $item = $request->input('item');
$action = "{$type}.mute"; $action = $type . '.mute';
if (!in_array($action, $this->filters)) { if (!in_array($action, $this->filters)) {
return abort(406); return abort(406);
@ -211,17 +211,71 @@ class AccountController extends Controller
return redirect()->back(); return redirect()->back();
} }
public function block(Request $request) public function unmute(Request $request)
{ {
$this->validate($request, [ $this->validate($request, [
'type' => 'required|string', 'type' => 'required|alpha_dash',
'item' => 'required|integer|min:1', 'item' => 'required|integer|min:1',
]); ]);
$user = Auth::user()->profile; $user = Auth::user()->profile;
$type = $request->input('type'); $type = $request->input('type');
$item = $request->input('item'); $item = $request->input('item');
$action = "{$type}.block"; $action = $type . '.mute';
if (!in_array($action, $this->filters)) {
return abort(406);
}
$filterable = [];
switch ($type) {
case 'user':
$profile = Profile::findOrFail($item);
if ($profile->id == $user->id) {
return abort(403);
}
$class = get_class($profile);
$filterable['id'] = $profile->id;
$filterable['type'] = $class;
break;
default:
abort(400);
break;
}
$filter = UserFilter::whereUserId($user->id)
->whereFilterableId($filterable['id'])
->whereFilterableType($filterable['type'])
->whereFilterType('mute')
->first();
if($filter) {
$filter->delete();
}
$pid = $user->id;
Cache::forget("user:filter:list:$pid");
Cache::forget("feature:discover:people:$pid");
Cache::forget("feature:discover:posts:$pid");
if($request->wantsJson()) {
return response()->json([200]);
} else {
return redirect()->back();
}
}
public function block(Request $request)
{
$this->validate($request, [
'type' => 'required|alpha_dash',
'item' => 'required|integer|min:1',
]);
$user = Auth::user()->profile;
$type = $request->input('type');
$item = $request->input('item');
$action = $type.'.block';
if (!in_array($action, $this->filters)) { if (!in_array($action, $this->filters)) {
return abort(406); return abort(406);
} }
@ -259,6 +313,56 @@ class AccountController extends Controller
return redirect()->back(); return redirect()->back();
} }
public function unblock(Request $request)
{
$this->validate($request, [
'type' => 'required|alpha_dash',
'item' => 'required|integer|min:1',
]);
$user = Auth::user()->profile;
$type = $request->input('type');
$item = $request->input('item');
$action = $type . '.block';
if (!in_array($action, $this->filters)) {
return abort(406);
}
$filterable = [];
switch ($type) {
case 'user':
$profile = Profile::findOrFail($item);
if ($profile->id == $user->id) {
return abort(403);
}
$class = get_class($profile);
$filterable['id'] = $profile->id;
$filterable['type'] = $class;
break;
default:
abort(400);
break;
}
$filter = UserFilter::whereUserId($user->id)
->whereFilterableId($filterable['id'])
->whereFilterableType($filterable['type'])
->whereFilterType('block')
->first();
if($filter) {
$filter->delete();
}
$pid = $user->id;
Cache::forget("user:filter:list:$pid");
Cache::forget("feature:discover:people:$pid");
Cache::forget("feature:discover:posts:$pid");
return redirect()->back();
}
public function followRequests(Request $request) public function followRequests(Request $request)
{ {
$pid = Auth::user()->profile->id; $pid = Auth::user()->profile->id;