diff --git a/appinfo/info.xml b/appinfo/info.xml index 20a745c..82b72d2 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -5,7 +5,7 @@ Agency App for managing Agency of DA - 0.0.2 + 0.0.3 Agency tools diff --git a/appinfo/routes.php b/appinfo/routes.php index 04b91dd..6f3ab63 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -16,5 +16,6 @@ return [ ['name' => 'group#delagencygroup', 'url' => '/delagencygroup/{id}', 'verb' => 'GET'], # DEVELOPMENT ['name' => 'migrate#startMigration', 'url' => '/startmigration', 'verb' => 'PUT'], + ['name' => 'migrate#getcurrentuser', 'url' => '/getcurrentuser', 'verb' => 'POST'], ] ]; diff --git a/img/cogs-solid.svg b/img/cogs-solid.svg new file mode 100644 index 0000000..ef6bac8 --- /dev/null +++ b/img/cogs-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php new file mode 100644 index 0000000..bc6d020 --- /dev/null +++ b/lib/AppInfo/Application.php @@ -0,0 +1,50 @@ +appName); + $dispatcher = $this->getContainer()->query(IEventDispatcher::class); + + # ADding the Pre-Logout-Event for logging a User out of Django when user is atempt to logout from the cloud + $dispatcher->addServiceListener(BeforeUserLoggedOutEvent::class, LogoutByNC::class); + } + +} + +/* + LOGOUT DJANGO BY NC + Diese Klasse wird erzeugt, wenn das Evenet BeforeUserLoggedOutEvent getriggert wird. Dann wird + der User über die Django-API ausgeloggt! +*/ +class LogoutByNC extends Controller { + + protected $session; + + public function __construct(string $AppName, IRequest $request, IUserSession $session) { + parent::__construct($AppName, $request); + $this->session = $session; + } + # Logout the user! + public function handle(BeforeUserLoggedOutEvent $event): void { + $opts = [ + "http" => [ + "method" => "GET", + "header" => "" + ] + ]; + $context = stream_context_create($opts); + $file = file_get_contents('http://host.docker.internal:8000/api/logout/'.$this->session->getUser()->getUID(), false, $context); + } +} \ No newline at end of file diff --git a/lib/Controller/MigrateController.php b/lib/Controller/MigrateController.php index bed6195..9cb86d8 100644 --- a/lib/Controller/MigrateController.php +++ b/lib/Controller/MigrateController.php @@ -11,9 +11,9 @@ use OCP\IGroup; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Controller; - use OCP\IDBConnection; + class MigrateController extends Controller { protected $userSession; @@ -31,6 +31,7 @@ class MigrateController extends Controller { $this->connection = $connection; $this->groupManager = $groupManager; $this->userManager = $userManager; + } // Return an random Id-Ele for generating single IDs @@ -45,7 +46,8 @@ class MigrateController extends Controller { } /** - * @NoAdminRequired + * @NoCSRFRequired + * @NoAdminRequired */ public function startMigration(string $agencyid, string $mainurl) { $json = file_get_contents($mainurl.$agencyid); @@ -60,9 +62,20 @@ class MigrateController extends Controller { if($this->userManager->userExists($ele['userid']) == false){ $tempuser = $this->userManager->createUser($ele['userid'], $this->generateRandomPassword()); $tempuser->setEmailAddress($ele['userid']); + $tempuser->setDisplayName($ele['displayname']); } } return $feedbackstring; } -} \ No newline at end of file + + /** + * @PublicPage + * @NoCSRFRequired + * @NoAdminRequired + */ + public function getcurrentuser(){ + #return $this->userSession->getUser()->getUID(); + return $this->userSession->getSession(); + } +} diff --git a/src/router/routes.js b/src/router/routes.js index 86c4ec1..dd73f5f 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -19,3 +19,4 @@ export default [ component: Migrate, }, ] +// TODO: Hier migrate usw. auf den richtigen Pfad setzen und agencydata auch wieder auf agencydata usw.