GrafiteInc/Scaffold

View on GitHub
app/Http/Controllers/User/ApiTokenController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use App\Notifications\InAppNotification;
use Illuminate\Http\Request;

class ApiTokenController extends Controller
{
    public function index(Request $request)
    {
        $tokens = $request->user()->tokens()->orderByDesc('created_at')->get();

        return view('user.api-tokens')->withTokens($tokens);
    }

    public function create(Request $request)
    {
        $token = $request->user()->createToken($request->name, $request->permissions ?? []);

        $notification = new InAppNotification('You have a new API token.');
        $notification->isImportant();

        activity("API token {$request->name} created.");

        $request->user()->notify($notification);

        return redirect()->back()->withToken($token->plainTextToken);
    }

    public function destroy(Request $request, $token)
    {
        $token = $request->user()->tokens()
            ->where('id', $token)->get()->first();

        activity("API token {$token->name} deleted.");

        $token->delete();

        return redirect()->back()->withMessage('Token deleted');
    }
}