113113use OC \Security \CertificateManager ;
114114use OC \Security \CredentialsManager ;
115115use OC \Security \Crypto ;
116- use OC \Security \CSP \ContentSecurityPolicyManager ;
117116use OC \Security \CSP \ContentSecurityPolicyNonceManager ;
118117use OC \Security \CSRF \CsrfTokenGenerator ;
119118use OC \Security \CSRF \CsrfTokenManager ;
163162use OCP \RichObjectStrings \IValidator ;
164163use OCP \Security \IContentSecurityPolicyManager ;
165164use OCP \Share \IShareHelper ;
165+ use OCP \User \Events \BeforePasswordUpdatedEvent ;
166+ use OCP \User \Events \BeforeUserCreatedEvent ;
167+ use OCP \User \Events \BeforeUserDeletedEvent ;
168+ use OCP \User \Events \BeforeUserLoggedInEvent ;
169+ use OCP \User \Events \BeforeUserLoggedInWithCookieEvent ;
170+ use OCP \User \Events \BeforeUserLoggedOutEvent ;
171+ use OCP \User \Events \PasswordUpdatedEvent ;
172+ use OCP \User \Events \UserChangedEvent ;
173+ use OCP \User \Events \UserCreatedEvent ;
174+ use OCP \User \Events \UserDeletedEvent ;
175+ use OCP \User \Events \UserLoggedInEvent ;
176+ use OCP \User \Events \UserLoggedInWithCookieEvent ;
177+ use OCP \User \Events \UserLoggedOutEvent ;
166178use Symfony \Component \EventDispatcher \EventDispatcherInterface ;
167179use Symfony \Component \EventDispatcher \GenericEvent ;
168180
@@ -380,7 +392,7 @@ public function __construct($webRoot, \OC\Config $config) {
380392 $ defaultTokenProvider = null ;
381393 }
382394
383- $ dispatcher = $ c ->getEventDispatcher ();
395+ $ legacyDispatcher = $ c ->getEventDispatcher ();
384396
385397 $ userSession = new \OC \User \Session (
386398 $ manager ,
@@ -395,45 +407,99 @@ public function __construct($webRoot, \OC\Config $config) {
395407 );
396408 $ userSession ->listen ('\OC\User ' , 'preCreateUser ' , function ($ uid , $ password ) {
397409 \OC_Hook::emit ('OC_User ' , 'pre_createUser ' , array ('run ' => true , 'uid ' => $ uid , 'password ' => $ password ));
410+
411+ /** @var IEventDispatcher $dispatcher */
412+ $ dispatcher = $ this ->query (IEventDispatcher::class);
413+ $ dispatcher ->dispatchTyped (new BeforeUserCreatedEvent ($ uid , $ password ));
398414 });
399415 $ userSession ->listen ('\OC\User ' , 'postCreateUser ' , function ($ user , $ password ) {
400416 /** @var $user \OC\User\User */
401417 \OC_Hook::emit ('OC_User ' , 'post_createUser ' , array ('uid ' => $ user ->getUID (), 'password ' => $ password ));
418+
419+ /** @var IEventDispatcher $dispatcher */
420+ $ dispatcher = $ this ->query (IEventDispatcher::class);
421+ $ dispatcher ->dispatchTyped (new UserCreatedEvent ($ user , $ password ));
402422 });
403- $ userSession ->listen ('\OC\User ' , 'preDelete ' , function ($ user ) use ($ dispatcher ) {
423+ $ userSession ->listen ('\OC\User ' , 'preDelete ' , function ($ user ) use ($ legacyDispatcher ) {
404424 /** @var $user \OC\User\User */
405425 \OC_Hook::emit ('OC_User ' , 'pre_deleteUser ' , array ('run ' => true , 'uid ' => $ user ->getUID ()));
406- $ dispatcher ->dispatch ('OCP\IUser::preDelete ' , new GenericEvent ($ user ));
426+ $ legacyDispatcher ->dispatch ('OCP\IUser::preDelete ' , new GenericEvent ($ user ));
427+
428+ /** @var IEventDispatcher $dispatcher */
429+ $ dispatcher = $ this ->query (IEventDispatcher::class);
430+ $ dispatcher ->dispatchTyped (new BeforeUserDeletedEvent ($ user ));
407431 });
408432 $ userSession ->listen ('\OC\User ' , 'postDelete ' , function ($ user ) {
409433 /** @var $user \OC\User\User */
410434 \OC_Hook::emit ('OC_User ' , 'post_deleteUser ' , array ('uid ' => $ user ->getUID ()));
435+
436+ /** @var IEventDispatcher $dispatcher */
437+ $ dispatcher = $ this ->query (IEventDispatcher::class);
438+ $ dispatcher ->dispatchTyped (new UserDeletedEvent ($ user ));
411439 });
412440 $ userSession ->listen ('\OC\User ' , 'preSetPassword ' , function ($ user , $ password , $ recoveryPassword ) {
413441 /** @var $user \OC\User\User */
414442 \OC_Hook::emit ('OC_User ' , 'pre_setPassword ' , array ('run ' => true , 'uid ' => $ user ->getUID (), 'password ' => $ password , 'recoveryPassword ' => $ recoveryPassword ));
443+
444+ /** @var IEventDispatcher $dispatcher */
445+ $ dispatcher = $ this ->query (IEventDispatcher::class);
446+ $ dispatcher ->dispatchTyped (new BeforePasswordUpdatedEvent ($ user , $ password , $ recoveryPassword ));
415447 });
416448 $ userSession ->listen ('\OC\User ' , 'postSetPassword ' , function ($ user , $ password , $ recoveryPassword ) {
417449 /** @var $user \OC\User\User */
418450 \OC_Hook::emit ('OC_User ' , 'post_setPassword ' , array ('run ' => true , 'uid ' => $ user ->getUID (), 'password ' => $ password , 'recoveryPassword ' => $ recoveryPassword ));
451+
452+ /** @var IEventDispatcher $dispatcher */
453+ $ dispatcher = $ this ->query (IEventDispatcher::class);
454+ $ dispatcher ->dispatchTyped (new PasswordUpdatedEvent ($ user , $ password , $ recoveryPassword ));
419455 });
420456 $ userSession ->listen ('\OC\User ' , 'preLogin ' , function ($ uid , $ password ) {
421457 \OC_Hook::emit ('OC_User ' , 'pre_login ' , array ('run ' => true , 'uid ' => $ uid , 'password ' => $ password ));
458+
459+ /** @var IEventDispatcher $dispatcher */
460+ $ dispatcher = $ this ->query (IEventDispatcher::class);
461+ $ dispatcher ->dispatchTyped (new BeforeUserLoggedInEvent ($ uid , $ password ));
422462 });
423463 $ userSession ->listen ('\OC\User ' , 'postLogin ' , function ($ user , $ password , $ isTokenLogin ) {
424464 /** @var $user \OC\User\User */
425465 \OC_Hook::emit ('OC_User ' , 'post_login ' , array ('run ' => true , 'uid ' => $ user ->getUID (), 'password ' => $ password , 'isTokenLogin ' => $ isTokenLogin ));
466+
467+ /** @var IEventDispatcher $dispatcher */
468+ $ dispatcher = $ this ->query (IEventDispatcher::class);
469+ $ dispatcher ->dispatchTyped (new UserLoggedInEvent ($ user , $ password , $ isTokenLogin ));
470+ });
471+ $ userSession ->listen ('\OC\User ' , 'preRememberedLogin ' , function ($ uid ) {
472+ /** @var IEventDispatcher $dispatcher */
473+ $ dispatcher = $ this ->query (IEventDispatcher::class);
474+ $ dispatcher ->dispatchTyped (new BeforeUserLoggedInWithCookieEvent ($ uid ));
426475 });
427476 $ userSession ->listen ('\OC\User ' , 'postRememberedLogin ' , function ($ user , $ password ) {
428477 /** @var $user \OC\User\User */
429478 \OC_Hook::emit ('OC_User ' , 'post_login ' , array ('run ' => true , 'uid ' => $ user ->getUID (), 'password ' => $ password ));
479+
480+ /** @var IEventDispatcher $dispatcher */
481+ $ dispatcher = $ this ->query (IEventDispatcher::class);
482+ $ dispatcher ->dispatchTyped (new UserLoggedInWithCookieEvent ($ user , $ password ));
430483 });
431- $ userSession ->listen ('\OC\User ' , 'logout ' , function () {
484+ $ userSession ->listen ('\OC\User ' , 'logout ' , function ($ user ) {
432485 \OC_Hook::emit ('OC_User ' , 'logout ' , array ());
486+
487+ /** @var IEventDispatcher $dispatcher */
488+ $ dispatcher = $ this ->query (IEventDispatcher::class);
489+ $ dispatcher ->dispatchTyped (new BeforeUserLoggedOutEvent ($ user ));
490+ });
491+ $ userSession ->listen ('\OC\User ' , 'postLogout ' , function ($ user ) {
492+ /** @var IEventDispatcher $dispatcher */
493+ $ dispatcher = $ this ->query (IEventDispatcher::class);
494+ $ dispatcher ->dispatchTyped (new UserLoggedOutEvent ($ user ));
433495 });
434496 $ userSession ->listen ('\OC\User ' , 'changeUser ' , function ($ user , $ feature , $ value , $ oldValue ) {
435497 /** @var $user \OC\User\User */
436498 \OC_Hook::emit ('OC_User ' , 'changeUser ' , array ('run ' => true , 'user ' => $ user , 'feature ' => $ feature , 'value ' => $ value , 'old_value ' => $ oldValue ));
499+
500+ /** @var IEventDispatcher $dispatcher */
501+ $ dispatcher = $ this ->query (IEventDispatcher::class);
502+ $ dispatcher ->dispatchTyped (new UserChangedEvent ($ user , $ feature , $ value , $ oldValue ));
437503 });
438504 return $ userSession ;
439505 });
0 commit comments