From 5c0fc4f01641a956462c124ea80eb18bfdfee0fd Mon Sep 17 00:00:00 2001 From: William Mantly Date: Thu, 23 Jul 2026 02:22:46 -0400 Subject: [PATCH] Release 1.3.0 Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 19 +++++++++++++++++++ nodejs/package-lock.json | 4 ++-- nodejs/package.json | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90ce3f0..ad33820 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ All notable changes to this project are documented here. Format loosely follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions correspond to git tags (`vX.Y.Z`) and `nodejs/package.json`'s `version`. +## [1.3.0] - 2026-07-23 + +### Added +- **OAuth client management API** at `/api/oauth/client` (group `app_sso_oauth_admin`): list, create, update, delete, and rotate-secret for OAuth clients, backed by the Resource model. Accepts form-style string inputs (newline-separated `redirect_uris`/`allowed_groups`, space-separated `scopes`). +- **Dockerized test suite**: `docker-compose -f docker-compose.test.yml up --build` spins up OpenLDAP + Redis + a test-runner that seeds the test user and runs the full jest suite (174 tests) against them. `tests/globalSetup.js` honors `REDIS_URL`. + +### Fixed +- Completed the model-redis → `@simpleworkjs/orm` port that shipped half-finished in 1.2.1: + - `OtpToken.issue`/`verify` called nonexistent `find()`/`listDetail()` — every OTP login 500'd. + - Impersonation create/revoke called nonexistent `ImpersonationToken.listDetail()` — both endpoints 500'd. + - `OAuthClient` read `is_valid` from the Resource model, which has no such column — every client evaluated as disabled and **all `/oauth/authorize` requests were rejected with 400**. Client validity now lives in `metadata` (absent = valid). + - `OAuthClient.add` didn't set the required-unique `Resource.slug`; clients now get a slug derived from the client name. + - `GET /api/token/:name/:token` returned `{results: null}` with 200 for unknown tokens (orm `get()` returns null instead of throwing); now 404s. +- `User.login` returns a clean 401 instead of crashing when neither `uid` nor `username` is supplied. +- Depend on published `@simpleworkjs/orm` ^0.2.8 and `model-redis` ^1.6.0 instead of a local `file:` link that broke `npm ci` in docker builds. + +### Changed +- Removed the Mobile Phone field from the user create/edit form. + ## [1.2.1] - 2026-07-22 ### Added diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index d630eaa..d113b1f 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "t42-sso-manager", - "version": "1.2.1", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "t42-sso-manager", - "version": "1.2.1", + "version": "1.3.0", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-free": "^7.3.0", diff --git a/nodejs/package.json b/nodejs/package.json index a411459..20f820a 100755 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "t42-sso-manager", - "version": "1.2.1", + "version": "1.3.0", "description": "A very simple LDAP management and SSO system", "author": [ {