@Override public void onInitialize(OrienteerWebApplication app, ODatabaseDocument db) { List<Class<? extends ORecordHook>> hooks = app.getOrientDbSettings().getORecordHooks(); hooks.add(OrienteerUserHook.class); hooks.add(OrienteerUserRoleHook.class); RegistrationResource.mount(app); RestorePasswordResource.mount(app); app.mountPages("org.orienteer.users.web"); OScheduler scheduler = db.getMetadata().getScheduler(); Collection<OScheduledEvent> events = scheduler.getEvents().values(); // TODO: remove after fix issue https://github.com/orientechnologies/orientdb/issues/8368 for (OScheduledEvent event : events) { scheduler.updateEvent(event); } }
@Override public void restoreUserPassword(OrienteerUser user) { clearRestoring(user); // clear previous restore data if it present DBClosure.sudoConsumer(db -> { user.setRestoreId(UUID.randomUUID().toString()) .setRestoreIdCreated(Instant.now()) .save(); String name = OrienteerUsersModule.EVENT_RESTORE_PASSWORD_PREFIX + user.getRestoreId(); OScheduler scheduler = db.getMetadata().getScheduler(); scheduler.scheduleEvent(createRestorePasswordSchedulerEvent(db, user, name)); }); notifyUserAboutRestorePassword(user); }
@Override public void clearRestoring(OrienteerUser user) { if (user.getRestoreId() != null) { DBClosure.sudoConsumer(db -> { String eventName = OrienteerUsersModule.EVENT_RESTORE_PASSWORD_PREFIX + user.getRestoreId(); OScheduler scheduler = db.getMetadata().getScheduler(); if (scheduler.getEvent(eventName) != null) { scheduler.removeEvent(eventName); } user.setRestoreId(null); user.setRestoreIdCreatedAsDate(null); user.save(); }); } }