Feature Wiki
Tabs
Streamline and Enhance User Deletion Cron-Jobs
Page Overview
[Hide]This article has been renamed (former "Delete Users After Expiration") because JF decided that, at the latest after this proposal for a new trigger (expiration), there are too many single cron-tasks dealing with user deletion, so they must be combined into some multi-trigger cron-task deleting users.
1 Initial Problem
1.1 New Trigger
There are four cron-tasks in ILIAS which automatically delete inactive and inactivated user accounts, or those who never logged in.
However, there are accounts in ILIAS who only have "expired", i.e., the end date of their temporally restricted validity has exceeded.
By now (ILIAS 5.4.x), „expired“ user accounts can’t be transferred into „inactive“ (which not only has technical reasons but also conceptual ones).
Therefore, there should be a possibility in ILIAS to automatically delete user accounts with expired access.
1.2 Unifying and Streamlining Cron-Tasks
With this new trigger supposed above, at the latest, user deletion cron-tasks became too many to offer good usability for administrators.
So, according to a JF decision, those cron-tasks are supposed to be combined in one cron-task with multiple trigger options.
By now (ILIAS 6), there are the following cron-tasks referring to this article:
Title | Byline | 'Frequency' or 'Schedule' setting | 'Considered roles' or 'Included Roles' setting | 'Days passed since …' or 'Threshold' setting | 'Warning Mail' setting |
Check user accounts | If enabled, all users whose account expires will be informed by e-mail two weeks before. Furthermore all users which have not confirmed their account after a registration with e-mail confirmation will be deleted. | (no configuration at all) | |||
Delete user accounts with no login for a long time | If enabled, user accounts will be deleted depending on the date of their last login. | yes | yes | yes | yes |
Delete inactivated user accounts | If enabled, user accounts will be deleted [n] days after their inactivation. | yes | yes | yes |
|
Delete user accounts without login | All user accounts without login at all be deleted. | yes | yes | yes |
2 Conceptual Summary
2.1 Unifying and Streamlining Cron-Tasks
2.1.1 General
adm/cron_jobs/ shows only one cron-task "Delete User Automatically" (byline: "If enabled, user accounts will be deleted depending on the date of one or more trigger events.")
The "Actions" column offers "Activate" / "Deactivate" and "Edit" links (and a "Reset" link in case the cron-task has been aborted).
After clicking "Edit", ILIAS displays a form offering a setting "Trigger Events" with five multiple choice options:
- User hasn't logged in for a long time
- User has never logged in at all
- User hasn't confirmed account after registration with e-mail confirmation
- User has been inactivated
- User has expired
Each activated trigger shows settings which allow to configure the same parameters:
- Frequency (of execution) - radio buttons with options:
- Daily
- Weekly
- Monthly
- Quarterly
- Yearly
- Considered roles (of users to be deleted) - checkboxes for all global roles existing on the installation
- Days passed since trigger event - textbox for number of days
- Warning Mail - textbox for number of days
2.2 Trigger Events
The trigger events are defined as follows:
- "User hasn't logged in for a long time":
[n] days passed since last login - "User has never logged in at all":
[n] days passed since creation - "User hasn't confirmed account after registration with e-mail confirmation":
[n] days passed since creation - "User has been inactivated":
[n] days passed since inactivation - "User has expired":
[n] days passed since expiration
The following functionalities must be added for specific trigger events because they have not been available in the corresponding cron-tasks so far:
Trigger event | So far executed by cron-task | 'Frequency' or 'Schedule' setting | 'Considered roles' or 'Included Roles' setting | 'Days passed since …' or 'Threshold' setting | 'Warning Mail' functionality / configurability |
User hasn't logged in for a long time | Delete user accounts with no login for a long time | ||||
User has never logged in at all | Delete user accounts without login | yes | |||
User has been inactivated | Delete inactivated user accounts | yes | |||
User hasn't confirmed account after registration with e-mail confirmation | Check user accounts: | Configurability of deletion | |||
User has expired | Check user accounts: | Configurability of warning mail |
2.3 New Trigger
An additional trigger "User has expired" appears in the cron-task's list of possible triggers that has not been available in former versions of ILIAS.
It offers automatic deletion of user accounts who have limited access and whose access is expired.
3 User Interface Modifications
3.1 List of Affected Views
adm/cron_jobs/
3.2 User Interface Details
The cron-task configuration offers the following parameters:
- First level:
- "Trigger Event" checkboxes
- Second level of each checkbox:
- Schedule (radio buttons, obligatory)
- Included roles (scrollable checkox list, optional)
- Days passed since expiration date (textbox, obligatory)
- Warning mail x days before deletion (textbox, optional)
3.3 New User Interface Concepts
none
4 Technical Information
{The maintainer has to provide necessary technical information, e.g. dependencies on other ILIAS components, necessary modifications in general services/architecture, potential security or performance issues.}
5 Contact
- Author of the Request: Suittenpointner, Florian [suittenpointner]
- Maintainer: Meyer, Stefan [smeyer]
- Implementation of the feature is done by: tbd
6 Funding
If you are interest in funding this feature, please add your name and institution to this list.
- Qualitus
- …
7 Discussion
Florian Suittenpointner, 22 Oct 2019:
A feature Workshop took place today (https://docu.ilias.de/goto_docu_sess_8057.html) on this topic.
All participants agreed that there is a need for a solution.
We discussed approaches with a different or wider scope (unifying the "expired" and "inactive" status, cron-job transposing "expired" to "inactive" status) but in end the end came back to the concept presented here.
JourFixe, ILIAS [jourfixe], 06 JAN 2020 : We prefer to have one cron job to delete inactive users as well as users that haven't logged in for a long time or never logged in. This would reduce the number of cronjobs and ease the daily work of administrators.
8 Implementation
{The maintainer has to give a description of the final implementation and add screenshots if possible.}
Test Cases
Test cases completed at {date} by {user}
- {Test case number linked to Testrail} : {test case title}
Approval
Approved at {date} by {user}.
Last edited: 7. Jan 2020, 14:13, Suittenpointner, Florian [suittenpointner]