Releases: systemli/userli
Releases · systemli/userli
5.1.1
5.1.0
Features and Improvements
- ✨ Use PHP CS Fixer (#917)
- 📝 Update documentation for integrations
- ⬆️ Update Symfony to 6.4.30 (#928)
- 🔥 Remove Email Normalization in Postfix Controller (#930)
- 🔒️ Add Psalm configuration file for static analysis (#918)
- 🚨 Various fixes found by Psalm static analysis (#931, #932, #933, #934, #935, #936, #937, #938, #939, #940, #940)
- ♻️ Email is required in User constructor (#943)
- ♻️ Code is required in Voucher constructor (#944)
5.0.0
Features and Improvements
- ✨ Add option to force password update for users (#858)
- ✨ Implement role hierarchy and reachable roles functionality (#866)
- ✨ Introduce API Token Settings (#868)
- 🔒️ Use session instead of query to transport the new recovery token (#876)
- 🔒️ Show notification to the user and remove it after the password change (#877)
- ✨ Introduce Webhook Settings (#874)
- ♻️ Use Symfony Scheduler for recurring tasks (#882)
- ♻️ Send welcome mails asynchronously (#883)
- ✨ Introduce configurable Settings (#887, #888, #892)
- 🐳 Build Docker Image for multiple platforms (#893)
- 🐛 Postfix adapter: Handle '+'-delimiter in email local part
- ⬆️ Update to symfony 6.4.26 (#895)
- ✨ Add Settings to Userli Initialization (#911)
Database Changes
CREATE TABLE api_tokens (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, scopes JSON NOT NULL COMMENT '(DC2Type:json)', token VARCHAR(64) NOT NULL, creation_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', last_used_time DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', UNIQUE INDEX UNIQ_2CAD560E5F37A13B (token), INDEX idx_token (token), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
CREATE TABLE webhook_deliveries (id BINARY(16) NOT NULL COMMENT '(DC2Type:ulid)', endpoint_id INT NOT NULL, type VARCHAR(100) NOT NULL, request_body JSON NOT NULL COMMENT '(DC2Type:json)', request_headers JSON NOT NULL COMMENT '(DC2Type:json)', response_code INT DEFAULT NULL, response_body LONGTEXT DEFAULT NULL, success TINYINT(1) DEFAULT 0 NOT NULL, error LONGTEXT DEFAULT NULL, attempts INT DEFAULT 0 NOT NULL, dispatched_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', delivered_time DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', INDEX IDX_3681F32D21AF7E36 (endpoint_id), INDEX IDX_3681F32DA80E9988 (dispatched_time), INDEX IDX_3681F32D6F00DFB2 (success), INDEX IDX_3681F32D8CDE5729 (type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
CREATE TABLE user_notifications (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, type VARCHAR(50) NOT NULL, creation_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', metadata JSON DEFAULT NULL COMMENT '(DC2Type:json)', INDEX IDX_8E8E1D83A76ED395 (user_id), INDEX idx_user_type_creation_time (user_id, type, creation_time), INDEX idx_user_type (user_id, type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
CREATE TABLE webhook_endpoints (id INT AUTO_INCREMENT NOT NULL, url VARCHAR(2048) NOT NULL, secret VARCHAR(255) NOT NULL, events JSON DEFAULT NULL COMMENT '(DC2Type:json)', enabled TINYINT(1) DEFAULT 1 NOT NULL, creation_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', updated_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', INDEX IDX_E95677CC50F9BB84 (enabled), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
CREATE TABLE settings (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, value LONGTEXT DEFAULT NULL, creation_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', updated_time DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', UNIQUE INDEX UNIQ_SETTING_NAME (name), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
CREATE TABLE messenger_messages (id BIGINT AUTO_INCREMENT NOT NULL, body LONGTEXT NOT NULL, headers LONGTEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', available_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', delivered_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', INDEX IDX_75EA56E0FB7336F0 (queue_name), INDEX IDX_75EA56E0E3BD61CE (available_at), INDEX IDX_75EA56E016BA31DB (delivered_at), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
ALTER TABLE webhook_deliveries ADD CONSTRAINT FK_3681F32D21AF7E36 FOREIGN KEY (endpoint_id) REFERENCES webhook_endpoints (id) ON DELETE CASCADE;
ALTER TABLE user_notifications ADD CONSTRAINT FK_8E8E1D83A76ED395 FOREIGN KEY (user_id) REFERENCES virtual_users (id) ON DELETE CASCADE;
ALTER TABLE virtual_users ADD password_change_required TINYINT(1) DEFAULT 0 NOT NULL;
CREATE INDEX creation_time_idx ON virtual_users (creation_time);
CREATE INDEX deleted_idx ON virtual_users (deleted);
CREATE INDEX email_deleted_idx ON virtual_users (email, deleted);
CREATE INDEX domain_deleted_idx ON virtual_users (domain_id, deleted);
CREATE INDEX email_domain_idx ON virtual_users (email, domain_id);4.2.1
4.2.0
Features and Improvements
- ✨ Store User Notifications (compromised passwords)
- 🔒️ Obfuscate last login time
- ✨ Implement role hierarchy and reachable roles functionality
Database Changes
- Add
user_notificationstable to store user notifications
ALTER TABLE virtual_users ADD password_change_required TINYINT(1) DEFAULT 0 NOT NULL, CHANGE roles roles LONGTEXT DEFAULT 'a:0:{}' NOT NULL COMMENT '(DC2Type:array)';
CREATE TABLE user_notifications
(
id INT AUTO_INCREMENT NOT NULL,
user_id INT NOT NULL,
type VARCHAR(50) NOT NULL,
creation_time DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)',
metadata JSON DEFAULT NULL COMMENT '(DC2Type:json)',
INDEX IDX_8E8E1D83A76ED395 (user_id),
INDEX idx_user_type_creation_time (user_id, type, creation_time),
INDEX idx_user_type (user_id, type),
PRIMARY KEY (id)
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
ALTER TABLE user_notifications
ADD CONSTRAINT FK_3F980AC8A76ED395 FOREIGN KEY (user_id) REFERENCES virtual_users (id) ON DELETE CASCADE;4.1.1
- ♻️ Recognize JSON Requests and return JSON responses
- 🐛 Improve JSON Decoding for Dovecot Lua Auth Script
4.1.0
Features and Improvements
- 💄 Rework the UI using Tailwind CSS and Heroicons
- 🚸 Show 2FA secret during initial configuration
- 📝 Add Copilot Instructions
Technical Changes
- ⬆️ Upgrade Symfony and related dependencies
- ➖ Removed Bootstrap 3 and KnpMenuBundle
- 🧑💻 Add support for remote debugging
4.0.0
- Remove UsersCheckPasswordCommand (breaking change)
- Call webhook URLS on user created/deleted evens
- Update README
- Document how to test Dovecot integration
- Userli-dovecot-adapter: Improve error logging
- docker-compose: fix env vars
- Move docker files into own directory
- Add YAML, Markdown & Makefile to editorconfig
- Remove obsolete ansible requirements.yml
- Refactor: move user restore logic into its own handler
- refactor: Add abstract UsersBaseCommand class
- Don't allow to reset a deleted user
- Add command to restore a deleted user
- Rename MailCrypt trait to MailCryptEnabled
- Update Makefile and documentation
- Reset two-factor authentication with recovery process
- Change booleans in docker compose env vars to integers
- chore(deps): bump sonarsource/sonarqube-scan-action from 5.0.0 to 5.1.0
- Add editorconfig
- chore(deps-dev): bump the npm-dependencies group across 1 directory with 3 updates
- VoucherCountCommand: Show both used and unused vouchers per default
- fix: Enable mail_crypt for new users via admin backend
- Dockerfile: Install gpg
- Update and restructure documentation
- Suppress deprecation warnings in 'fingers_crossed' log handler
- Monolog: Fix config
- Monolog: Log to syslog in prod env
- Update GHA Runner to Ubuntu 24.04 (#736)
- Makefile: Revert change done in #727
- Docs: Fix broken links
- Docs: How to docker/podman with SELinux
- Docker compose: fix paths
- Update dependencies
- Fix typo in yarn package name on Debian/Ubuntu
- Update to symfony 6.4.19
- chore(deps-dev): bump the npm-dependencies group across 1 directory with 4 updates
- Reintroduce make integration
- Replace deprecated sonarcloud action
- fix: Link to correct installation page
- fix: Point to correct index.md
- fix: Install correct Debian packages
3.12.1
3.12.0
- Release Userli-Dovecot-Adapter as own tarball
- Remove container variable in Dovecot Dockerfile
- Say goodbye to Vagrant
- Lua script: fix typo
- Simplify Command and Repository Method
- Deprecate Munin
- Add command to get voucher count for User
- Upgrade Symfony
- Update npm dependencies
- Use sqlite DB in release process to not depend on MySQL
- Various improvements to documentation