feat: DLID licensing system — tables, models, update endpoint #658
Closed
jmiller
wants to merge 0 commits from
dev into main
pull from: dev
merge into: :main
:main
:rc
:dev
:fix/org-wiki
:feat/vnext
:feature/759-audit-client-extension-repos-for-stale-m
:feature/760-per-client-org-sweep-audit-client-mokosu
:worktree-agent-a5b50d10bab2beaac
:feature/749-release-notes-from-a-curated-release-not
:fix/rebrand-wiki-docs
:worktree-agent-acb0cede999748165
:feature/744-feat-let-issue-templates-set-mokogitea-f
:feature/745-org-default-teams-add-protected-option-b
:feature/746-auto-add-the-actions-bot-to-the-ci-cd-te
:feature/747-add-a-dedicated-system-api-automation-bo
:feature/738-expand-openapi-spec-mcp-tooling-for-org-
:feature/722-cleanup-and-standardization-of-issue-tem
:feature/723-feat-issue-and-pull-request-voting-upvot
:feature/725-enforce-dot-prefixed-repositories-are-al
:feature/727-org-level-branch-protection-is-stored-bu
:feature/secret-scanning
:rc/v1.26.1-moko.06.07.02
:rc/v1.26.1-moko.06.07.03
:rc/v1.26.1-moko.06.07.01
:rc/v1.26.1-moko.06.07
:rc/v1.26.1-moko.06.06.02
:rc/v1.26.1-moko.06.06.01
:rc/v1.26.1-moko.06.06
:rc/v1.26.1-moko.06.05.01
:rc/v1.26.1-moko.06.05
:rc/v1.26.1-moko.06.04
:rc/v1.26.1-moko.06.03
:rc/05.06.00
:rc/05.03.03
:rc/04.01.00
:rc/05.03.02
:rc/05.03.01
:rc/05.03.00
:rc/05.01.00
:rc/05.02.02
:rc/05.02.01
:rc/05.01.01
:rc/05.02.00
:rc/05.01.02
:rc/05.03.04
:rc/05.03.05
:rc/05.03.06
:rc/05.03.08
:rc/05.04.00
:rc/05.05.00
No Reviewers
Labels
Clear labels
breaking-change
ci-cd
config
dependencies
deploy-failure
docker
documentation
feature: wiki
good first issue
health-check
help wanted
mokostandards
push-failure
security
size/l
size/m
size/s
size/xl
size/xs
standards-drift
standards-update
sync-failure
tech-debt
upstream
upstream
work-in-progress
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
Breaking API or behavior change
CI/CD pipeline changes
Configuration changes
Dependency updates
Deployment failed
Docker/container changes
Documentation changes
Wiki system enhancements
Good for newcomers
Repo health check result
Extra attention needed
Related to MokoStandards framework
Git push operation failed
Security vulnerability or hardening
200-500 lines changed
50-200 lines changed
10-50 lines changed
500+ lines changed
< 10 lines changed
Deviates from MokoStandards
MokoStandards compliance update
Sync or mirror failed
Technical debt and TODO/FIXME items
Inherited from upstream Gitea
Draft or incomplete work
Something is not working
This issue or pull request already exists
New feature
Need some help
Something is wrong
More information is needed
This won't be fixed
No labels
Priority
-
Type
-
Milestone
No items
No Milestone
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: MokoConsulting/MokoGIT#658
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary\n\nCloses #617, #618, #619, #620, #621\n\nPhase 1+2 of the consumer DLID licensing system:\n\n### Database (v359 migration)\n- 5 new tables: license, license_entitlement, license_activation, product_tier, license_audit_log\n- 13 seeded product tiers (base → enterprise)\n- Composite unique indexes on (license_id, product_code) and (license_id, domain)\n\n### Models (models/licensing/)\n- License: DLID generation (CRC32 checksum), CRUD, status transitions\n- Entitlement: tier-based rebuild with custom entitlement preservation\n- Activation: domain tracking with upsert and limit enforcement\n- ProductTier: tier hierarchy with JSON repo lists\n- AuditLog: status and tier change tracking\n\n### API Endpoint\n-
GET /api/v1/licensing/updates/{product}.xml?dlid=XXX&domain=YYY\n- Validates DLID, checks license + entitlement, auto-activates domain\n- Returns Joomla-compatible update XML or empty<updates/>on failure\n\n## Test plan\n- [ ] Migration runs on fresh and existing databases\n- [ ] DLID generation produces valid checksummed keys\n- [ ] Tier change rebuilds entitlements, preserves custom ones\n- [ ] Domain limit enforcement works\n- [ ] Update endpoint returns valid XML for entitled products\n- [ ] Invalid DLID returns empty updates (no error)GET /api/v1/licensing/updates/{product}.xml?dlid=XXX&domain=YYY Validates DLID format (CRC32), checks license status and entitlement, auto-activates domain, returns Joomla-compatible update XML from the entitled repo's stable release. Invalid/expired returns empty <updates/>.Pull request closed