Skip to content

Releases: systemli/userli

5.1.1

11 Dec 16:42
bb56e9b

Choose a tag to compare

Bug Fixes

  • 🚑 Fix user creation in admin (#946)

5.1.0

11 Dec 12:46
a41ec51

Choose a tag to compare

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

08 Nov 11:25
57cad90

Choose a tag to compare

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

14 Oct 17:33
4.2.1

Choose a tag to compare

Bug fixes

  • 🐛 Backport Postfix adapter fix: Handle '+'-delimiter in email local part

4.2.0

03 Sep 14:40
315ea9b

Choose a tag to compare

Features and Improvements

  • ✨ Store User Notifications (compromised passwords)
  • 🔒️ Obfuscate last login time
  • ✨ Implement role hierarchy and reachable roles functionality

Database Changes

  • Add user_notifications table 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

11 Aug 09:02
abe64ff

Choose a tag to compare

  • ♻️ Recognize JSON Requests and return JSON responses
  • 🐛 Improve JSON Decoding for Dovecot Lua Auth Script

4.1.0

21 Jul 14:07
e806212

Choose a tag to compare

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

12 Apr 21:15
4.0.0
6f02ca9

Choose a tag to compare

  • 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

28 Feb 16:56
3.12.1

Choose a tag to compare

  • Fix Makefile

3.12.0

28 Feb 14:02
3.12.0

Choose a tag to compare

  • 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