prevent warning when user is not logged in
[grauphel.git] / controller / tokencontroller.php
1 <?php
2 /**
3  * Part of grauphel
4  *
5  * PHP version 5
6  *
7  * @category  Tools
8  * @package   Grauphel
9  * @author    Christian Weiske <cweiske@cweiske.de>
10  * @copyright 2014 Christian Weiske
11  * @license   http://www.gnu.org/licenses/agpl.html GNU AGPL v3
12  * @link      http://cweiske.de/grauphel.htm
13  */
14 namespace OCA\Grauphel\Controller;
15
16 use \OCP\AppFramework\Controller;
17 use \OCA\Grauphel\Lib\Dependencies;
18 use \OCA\Grauphel\Lib\OAuthException;
19 use \OCA\Grauphel\Lib\Response\ErrorResponse;
20 use \OCA\Grauphel\Lib\TokenStorage;
21
22 /**
23  * OAuth token management
24  *
25  * @category  Tools
26  * @package   Grauphel
27  * @author    Christian Weiske <cweiske@cweiske.de>
28  * @copyright 2014 Christian Weiske
29  * @license   http://www.gnu.org/licenses/agpl.html GNU AGPL v3
30  * @version   Release: @package_version@
31  * @link      http://cweiske.de/grauphel.htm
32  */
33 class TokenController extends Controller
34 {
35     /**
36      * constructor of the controller
37      *
38      * @param string   $appName Name of the app
39      * @param IRequest $request Instance of the request
40      */
41     public function __construct($appName, \OCP\IRequest $request, $user)
42     {
43         parent::__construct($appName, $request);
44         $this->user   = $user;
45
46         //default http header: we assume something is broken
47         header('HTTP/1.0 500 Internal Server Error');
48     }
49
50
51     /**
52      * Delete access tokens
53      * DELETE /tokens/$username/$tokenKey
54      *
55      * @NoAdminRequired
56      * @NoCSRFRequired
57      */
58     public function delete($username, $tokenKey)
59     {
60         if (false && ($this->user === null || $this->user->getUid() != $username)) {
61             $res = new ErrorResponse('You may only delete your own tokens.');
62             $res->setStatus(\OCP\AppFramework\Http::STATUS_FORBIDDEN);
63             return $res;
64         }
65
66         $deps = Dependencies::get();
67         try {
68             $token = $deps->tokens->load('access', $tokenKey);
69         } catch (OAuthException $e) {
70             $res = new ErrorResponse('Token not found.');
71             $res->setStatus(\OCP\AppFramework\Http::STATUS_NOT_FOUND);
72             return $res;
73         }
74
75         if ($username != $token->user) {
76             $res = new ErrorResponse('You may only delete your own tokens.');
77             $res->setStatus(\OCP\AppFramework\Http::STATUS_FORBIDDEN);
78             return $res;
79         }
80
81         $deps->tokens->delete('access', $tokenKey);
82
83         $res = new \OCP\AppFramework\Http\Response();
84         $res->setStatus(\OCP\AppFramework\Http::STATUS_NO_CONTENT);
85         return $res;
86     }
87 }
88 ?>