Skip to content
Snippets Groups Projects
Commit c851e4c7 authored by Jakob P's avatar Jakob P
Browse files

Add confirmation page when disconnecting from DAM.

parent ac5a5be9
No related branches found
Tags 1.0.10
No related merge requests found
......@@ -28,7 +28,7 @@ acquia_dam.site_auth:
defaults:
_controller: '\Drupal\acquia_dam\Controller\AuthenticationController::authenticateSite'
requirements:
_user_is_logged_in: 'TRUE'
_permission: 'administer site configuration'
acquia_dam.logout:
path: '/user/acquia-dam/logout'
......@@ -40,9 +40,9 @@ acquia_dam.logout:
acquia_dam.disconnect_site:
path: '/acquia-dam/disconnect'
defaults:
_controller: '\Drupal\acquia_dam\Controller\AuthenticationController::disconnectSite'
_form: '\Drupal\acquia_dam\Form\SiteDisconnectConfirm'
requirements:
_user_is_logged_in: 'TRUE'
_permission: 'administer site configuration'
acquia_dam.add_embed:
path: '/acquia-dam/embed-form/{asset_type}/{selected_ids}'
......
......@@ -163,27 +163,4 @@ class AuthenticationController extends ControllerBase {
return $this->redirect('entity.user.acquia_dam_auth', ['user' => $user_id]);
}
/**
* Disconnects site from Acquia DAM.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* Redirects to configuration page.
*/
public function disconnectSite(): RedirectResponse {
$acquia_dam_token = $this->authService->getSiteToken();
try {
$this->authService->cancelSiteRegistration($acquia_dam_token);
}
catch (\Exception $exception) {
$this->messenger()->addMessage('Something went wrong during site disconnect process. Please contact the site administrator for more information.');
$this->damLoggerChannel->error('Error during site logout request: ' . $exception->getMessage());
return $this->redirect('acquia_dam.config');
}
$this->messenger()->addMessage($this->t('Site successfully disconnected from Acquia DAM.'));
return $this->redirect('acquia_dam.config');
}
}
<?php
declare(strict_types=1);
namespace Drupal\acquia_dam\Form;
use Drupal\acquia_dam\AcquiadamAuthService;
use Drupal\acquia_dam\Controller\AuthenticationController;
use Drupal\Core\Form\ConfirmFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Provides a form to confirm the cancellation of Acquia DAM authentication.
*/
class SiteDisconnectConfirm extends ConfirmFormBase {
/**
* The request stack factory service.
*
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
protected $requestStack;
/**
* DAM auth service.
*
* @var \Drupal\acquia_dam\AcquiadamAuthService
*/
protected $authService;
/**
* SiteDisconnectConfirm constructor.
*
* @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
* The request stack.
* @param \Drupal\acquia_dam\AcquiadamAuthService $auth_service
* DAM Authentication service.
*/
public function __construct(RequestStack $request_stack, AcquiadamAuthService $auth_service) {
$this->requestStack = $request_stack;
$this->authService = $auth_service;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('request_stack'),
$container->get('acquia_dam.authentication_service'),
);
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'acquia_dam_site_disconnect_confirm';
}
/**
* {@inheritdoc}
*/
public function getQuestion() {
return $this->t('Are you sure you want to disconnect this site from Acquia DAM?');
}
/**
* {@inheritdoc}
*/
public function getCancelUrl() {
return new Url('acquia_dam.config');
}
/**
* {@inheritdoc}
*/
public function getDescription() {
return $this->t('Disconnecting this website from Acquia DAM will prevent its all users from using DAM assets in content. This action cannot be undone.');
}
/**
* {@inheritdoc}
*/
public function getConfirmText() {
return $this->t('Disconnect');
}
/**
* Disconnects site from Acquia DAM.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* Redirects to configuration page.
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$acquia_dam_token = $this->authService->getSiteToken();
try {
$this->authService->cancelSiteRegistration($acquia_dam_token);
}
catch (\Exception $exception) {
$this->messenger()->addMessage('Something went wrong during site disconnect process. Please contact the site administrator for more information.');
$this->logger('acquia_dam')->error('Error during site logout request: ' . $exception->getMessage());
return $this->redirect('acquia_dam.config');
}
$this->messenger()->addMessage($this->t('Site successfully disconnected from Acquia DAM.'));
$form_state->setRedirectUrl(Url::fromRoute('acquia_dam.config'));
return $this->redirect('acquia_dam.config');
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment