aboutsummaryrefslogtreecommitdiff
path: root/src/controllers/UserTokenController.php
blob: 20bd06cc8e68b6cc1d16a71c3c1ad41685c86cca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
namespace CamilStaps\BotleaguesApi\Controllers;

use CamilStaps\BotleaguesApi\Database\UserToken;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Auth;

class UserTokenController extends BaseController {

    protected $userToken;

    public function __construct(UserToken $userToken) {
        $this->userToken = $userToken;
    }

    /**
     * Only the tokens of the authenticated user are shown
     */
    public function index() {
        return $this->userToken->where('userId', '=', Auth::user()->id)->get();
    }
    
    /**
     * Only the tokens of the authenticated user are available
     */
    public function show($id) {
        return $this->userToken->where('userId', '=', Auth::user()->id)->findOrFail($id);
    }

    /**
     * Set the userId and create a random token
     */
    public function store() {
        $this->userToken->userId = Auth::user()->id;
        $this->userToken->token = base64_encode(openssl_random_pseudo_bytes(64));

        if ($this->userToken->save()) {
            // Remove the token field from the hidden fields
            $hidden = $this->userToken->getHidden();
            foreach ($hidden as $k => $v)
                if ($v == 'token')
                    unset($hidden[$k]);
            $this->userToken->setHidden($hidden);

            return $this->userToken;
        } else {
            throw new \Dingo\Api\Exception\StoreResourceFailedException;
        }
    }

}