|
34 | 34 | use OCP\IRequest; |
35 | 35 | use OCP\AppFramework\Http\TemplateResponse; |
36 | 36 | use OCP\AppFramework\Controller; |
| 37 | +use OCA\Deck\Db\CardMapper; |
| 38 | +use OCP\IURLGenerator; |
| 39 | +use \OCP\AppFramework\Http\RedirectResponse; |
| 40 | +use OCA\Deck\Db\Acl; |
| 41 | +use OCA\Deck\Service\CardService; |
37 | 42 |
|
38 | 43 | class PageController extends Controller { |
39 | 44 | private $permissionService; |
40 | 45 | private $initialState; |
41 | 46 | private $configService; |
42 | 47 | private $eventDispatcher; |
| 48 | + private $cardMapper; |
| 49 | + private $urlGenerator; |
| 50 | + private $cardService; |
43 | 51 |
|
44 | 52 | public function __construct( |
45 | 53 | $AppName, |
46 | 54 | IRequest $request, |
47 | 55 | PermissionService $permissionService, |
48 | 56 | IInitialStateService $initialStateService, |
49 | 57 | ConfigService $configService, |
50 | | - IEventDispatcher $eventDispatcher |
| 58 | + IEventDispatcher $eventDispatcher, |
| 59 | + CardMapper $cardMapper, |
| 60 | + IURLGenerator $urlGenerator, |
| 61 | + CardService $cardService |
51 | 62 | ) { |
52 | 63 | parent::__construct($AppName, $request); |
53 | 64 |
|
54 | 65 | $this->permissionService = $permissionService; |
55 | 66 | $this->initialState = $initialStateService; |
56 | 67 | $this->configService = $configService; |
57 | 68 | $this->eventDispatcher = $eventDispatcher; |
| 69 | + $this->cardMapper = $cardMapper; |
| 70 | + $this->urlGenerator = $urlGenerator; |
| 71 | + $this->cardService = $cardService; |
58 | 72 | } |
59 | 73 |
|
60 | 74 | /** |
@@ -85,4 +99,17 @@ public function index() { |
85 | 99 |
|
86 | 100 | return $response; |
87 | 101 | } |
| 102 | + |
| 103 | + /** |
| 104 | + * @NoAdminRequired |
| 105 | + * @NoCSRFRequired |
| 106 | + */ |
| 107 | + public function redirectToCard($cardId): RedirectResponse { |
| 108 | + try { |
| 109 | + $this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_READ); |
| 110 | + return new RedirectResponse($this->cardService->getCardUrl($cardId)); |
| 111 | + } catch (\Exception $e) { |
| 112 | + return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('deck.page.index')); |
| 113 | + } |
| 114 | + } |
88 | 115 | } |
0 commit comments