frappe / frappe/central

[IAM] Close IAM lifecycle/edge-case gaps and add an audit log

Open
#24 0 comments 0 reactions 0 assignees View on GitHub
iam
Dominant language
Python
Stars
18
Forks
11
Avg merge
1d 8h
Merged PRs (30d)
20

Description

**Phase 1 — Harden IAM.**

Close lifecycle/edge-case gaps and add an audit trail.

### Scope
- [ ] Last-owner protection (cannot remove/demote the only owner).
- [ ] Ownership transfer correctness + tests.
- [ ] Member-removal cascade (what happens to their custom-role assignments, sessions, issued tokens).
- [ ] **Team suspension semantics**: define what `status = Suspended` does to grants and to already-issued tokens. Intersects billing (past-due → suspend) — coordinate with the billing layer.
- [ ] **Audit log** for IAM mutations: who changed roles / members / access, and when.

### Acceptance
Edge cases handled with tests; suspension semantics documented; IAM mutations are audited.

Contributor guide

No contributing guide indexed for this repository

Research direction

No files or test paths are named. Start by tracing the IAM lifecycle and the billing past-due-to-suspension entry point, then identify how roles, members, grants, sessions, and issued tokens are handled. Done means the listed edge cases have tests, suspension semantics are documented, and IAM mutations produce an audit trail.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
authorization, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.