[{"data":1,"prerenderedAt":549},["ShallowReactive",2],{"navigation":3,"\u002Fauth\u002Fuser-status":189,"\u002Fauth\u002Fuser-status-surround":544},[4,34,60,116,137,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":33},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,18,23,28],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":5,"path":16,"stem":17,"icon":6},"\u002Fgetting-started\u002Fgetting-started","1.getting-started\u002F2.getting-started",{"title":19,"path":20,"stem":21,"icon":22},"Choosing a Preset","\u002Fgetting-started\u002Fchoosing-a-preset","1.getting-started\u002F3.choosing-a-preset","i-lucide-git-branch",{"title":24,"path":25,"stem":26,"icon":27},"Deployment","\u002Fgetting-started\u002Fdeployment","1.getting-started\u002F4.deployment","i-lucide-cloud",{"title":29,"path":30,"stem":31,"icon":32},"Background Maintenance","\u002Fgetting-started\u002Fbackground-maintenance","1.getting-started\u002F5.background-maintenance","i-lucide-timer-reset",false,{"title":35,"icon":36,"path":37,"stem":38,"children":39,"page":33},"Build","i-lucide-wrench","\u002Fbuild","2.build",[40,45,50,55],{"title":41,"path":42,"stem":43,"icon":44},"Routers & Prefixes","\u002Fbuild\u002Frouters-and-prefixes","2.build\u002F1.routers-and-prefixes","i-lucide-route",{"title":46,"path":47,"stem":48,"icon":49},"Configuration","\u002Fbuild\u002Fconfiguration","2.build\u002F2.configuration","i-lucide-settings",{"title":51,"path":52,"stem":53,"icon":54},"Authorization Dependencies","\u002Fbuild\u002Fauthorization-dependencies","2.build\u002F3.authorization-dependencies","i-lucide-shield-check",{"title":56,"path":57,"stem":58,"icon":59},"Command Line","\u002Fbuild\u002Fcli","2.build\u002F4.cli","i-lucide-terminal",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":33},"Auth","i-lucide-lock","\u002Fauth","3.auth",[66,71,76,81,86,91,96,101,106,111],{"title":67,"path":68,"stem":69,"icon":70},"OAuth & Social Login","\u002Fauth\u002Foauth-and-social-login","3.auth\u002F1.oauth-and-social-login","i-lucide-log-in",{"title":72,"path":73,"stem":74,"icon":75},"Multi-Frontend Support","\u002Fauth\u002Fmulti-frontend","3.auth\u002F10.multi-frontend","i-lucide-layout-grid",{"title":77,"path":78,"stem":79,"icon":80},"Sessions & Audit","\u002Fauth\u002Fsessions-and-audit","3.auth\u002F2.sessions-and-audit","i-lucide-monitor-smartphone",{"title":82,"path":83,"stem":84,"icon":85},"Passwordless & Messaging","\u002Fauth\u002Fpasswordless-and-messaging","3.auth\u002F3.passwordless-and-messaging","i-lucide-mail",{"title":87,"path":88,"stem":89,"icon":90},"JWT Tokens","\u002Fauth\u002Fjwt-tokens","3.auth\u002F4.jwt-tokens","i-lucide-key-round",{"title":92,"path":93,"stem":94,"icon":95},"User Management API","\u002Fauth\u002Fuser-management-api","3.auth\u002F5.user-management-api","i-lucide-users",{"title":97,"path":98,"stem":99,"icon":100},"User Invitations","\u002Fauth\u002Fuser-invitations","3.auth\u002F6.user-invitations","i-lucide-send",{"title":102,"path":103,"stem":104,"icon":105},"Roles & Permissions","\u002Fauth\u002Froles-and-permissions","3.auth\u002F7.roles-and-permissions","i-lucide-shield",{"title":107,"path":108,"stem":109,"icon":110},"ABAC","\u002Fauth\u002Fabac","3.auth\u002F8.abac","i-lucide-filter",{"title":112,"path":113,"stem":114,"icon":115},"User Status","\u002Fauth\u002Fuser-status","3.auth\u002F9.user-status","i-lucide-user-cog",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":33},"Enterprise","i-lucide-building-2","\u002Fenterprise","4.enterprise",[122,127,132],{"title":123,"path":124,"stem":125,"icon":126},"Core Authorization Concepts","\u002Fenterprise\u002Fcore-authorization-concepts","4.enterprise\u002F1.core-authorization-concepts","i-lucide-network",{"title":128,"path":129,"stem":130,"icon":131},"Entities","\u002Fenterprise\u002Fentities","4.enterprise\u002F2.entities","i-lucide-folder-tree",{"title":133,"path":134,"stem":135,"icon":136},"Entity Memberships","\u002Fenterprise\u002Fentity-memberships","4.enterprise\u002F3.entity-memberships","i-lucide-user-plus",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":33},"Integrations","i-lucide-plug","\u002Fintegrations","5.integrations",[143,148],{"title":144,"path":145,"stem":146,"icon":147},"API Keys","\u002Fintegrations\u002Fapi-keys","5.integrations\u002F1.api-keys","i-lucide-key",{"title":149,"path":150,"stem":151,"icon":152},"OutlabsAuth UI","\u002Fintegrations\u002Foutlabsauth-ui","5.integrations\u002F2.outlabsauth-ui","i-lucide-layout-dashboard",{"title":154,"icon":155,"path":156,"stem":157,"children":158,"page":33},"Reference","i-lucide-book-marked","\u002Freference","6.reference",[159,164,169,174,179,184],{"title":160,"path":161,"stem":162,"icon":163},"Data Models","\u002Freference\u002Fdata-models","6.reference\u002F1.data-models","i-lucide-database",{"title":165,"path":166,"stem":167,"icon":168},"Activity Tracking","\u002Freference\u002Factivity-tracking","6.reference\u002F2.activity-tracking","i-lucide-activity",{"title":170,"path":171,"stem":172,"icon":173},"Testing","\u002Freference\u002Ftesting","6.reference\u002F3.testing","i-lucide-flask-conical",{"title":175,"path":176,"stem":177,"icon":178},"Observability","\u002Freference\u002Fobservability","6.reference\u002F4.observability","i-lucide-eye",{"title":180,"path":181,"stem":182,"icon":183},"Metrics Reference","\u002Freference\u002Fmetrics-reference","6.reference\u002F5.metrics-reference","i-lucide-chart-bar",{"title":185,"path":186,"stem":187,"icon":188},"Log Events Reference","\u002Freference\u002Flog-events-reference","6.reference\u002F6.log-events-reference","i-lucide-scroll-text",{"id":190,"title":112,"body":191,"description":537,"extension":538,"links":539,"meta":540,"navigation":541,"path":113,"seo":542,"stem":114,"__hash__":543},"docs\u002F3.auth\u002F9.user-status.md",{"type":192,"value":193,"toc":532},"minimark",[194,201,208,325,336,359,362,367,418,420,424,497,499,503,528],[195,196,197],"note",{},[198,199,200],"p",{},"What each user status means for login and admin flows.",[198,202,203,204],{},"Status answers one question: ",[205,206,207],"strong",{},"can this user authenticate?",[209,210,211,230],"table",{},[212,213,214],"thead",{},[215,216,217,221,224,227],"tr",{},[218,219,220],"th",{},"Status",[218,222,223],{},"Can log in?",[218,225,226],{},"Typical meaning",[218,228,229],{},"How it usually changes",[231,232,233,251,270,292,307],"tbody",{},[215,234,235,242,245,248],{},[236,237,238],"td",{},[239,240,241],"code",{},"active",[236,243,244],{},"Yes",[236,246,247],{},"Normal account",[236,249,250],{},"From invite accept; admin reactivate",[215,252,253,258,261,264],{},[236,254,255],{},[239,256,257],{},"invited",[236,259,260],{},"No",[236,262,263],{},"Invite sent; no password yet",[236,265,266,267,269],{},"→ ",[239,268,241],{}," via accept-invite",[215,271,272,277,279,282],{},[236,273,274],{},[239,275,276],{},"suspended",[236,278,260],{},[236,280,281],{},"Temporary block",[236,283,284,285,288,289],{},"Admin ",[239,286,287],{},"PATCH …\u002Fstatus","; optional ",[239,290,291],{},"suspended_until",[215,293,294,299,301,304],{},[236,295,296],{},[239,297,298],{},"banned",[236,300,260],{},[236,302,303],{},"Permanent block",[236,305,306],{},"Admin; rarely reversed",[215,308,309,314,316,319],{},[236,310,311],{},[239,312,313],{},"deleted",[236,315,260],{},[236,317,318],{},"Soft-deleted",[236,320,321,322],{},"Admin delete; restore via ",[239,323,324],{},"POST …\u002Frestore",[198,326,327,328,331,332,335],{},"Email verification, lockouts, and product policy live in ",[205,329,330],{},"other"," fields — do\nnot overload ",[239,333,334],{},"status"," for those.",[337,338,343],"pre",{"className":339,"code":340,"language":341,"meta":342,"style":342},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from outlabs_auth.models.sql.enums import UserStatus\n# active | invited | suspended | banned | deleted\n","python","",[239,344,345,353],{"__ignoreMap":342},[346,347,350],"span",{"class":348,"line":349},"line",1,[346,351,352],{},"from outlabs_auth.models.sql.enums import UserStatus\n",[346,354,356],{"class":348,"line":355},2,[346,357,358],{},"# active | invited | suspended | banned | deleted\n",[360,361],"hr",{},[363,364,366],"h2",{"id":365},"behavior-notes","Behavior notes",[368,369,370,378,392,399],"ul",{},[371,372,373,374,377],"li",{},"Login checks status ",[205,375,376],{},"before"," password verification and raises an inactive \u002F\nbanned style error per status (invited users are pointed at the invite email).",[371,379,380,381,383,384,387,388,391],{},"Only ",[239,382,241],{}," users authenticate (JWT, API keys, refresh), subject also to\nlockout (",[239,385,386],{},"failed_login_attempts"," \u002F ",[239,389,390],{},"locked_until",") when that path is enabled.",[371,393,394,395,398],{},"On ",[205,396,397],{},"suspend \u002F ban \u002F delete",", revoke refresh tokens (and API keys) in the same\nadmin action if you need immediate cut-off; short-lived access JWTs may still\nwork until expiry unless you enable Redis blacklist.",[371,400,401,402,404,405,404,407,409,410,412,413,417],{},"Admin status PATCH on the users router allows ",[239,403,241],{}," | ",[239,406,276],{},[239,408,298],{},"\nonly — not ",[239,411,313],{}," (use delete \u002F restore endpoints). See ",[414,415,416],"a",{"href":93},"23",".",[360,419],{},[363,421,423],{"id":422},"related-fields-not-status","Related fields (not status)",[209,425,426,436],{},[212,427,428],{},[215,429,430,433],{},[218,431,432],{},"Concern",[218,434,435],{},"Fields \u002F mechanism",[231,437,438,455,465,475,486],{},[215,439,440,443],{},[236,441,442],{},"Invite in flight",[236,444,445,448,449,448,452],{},[239,446,447],{},"invite_token",", ",[239,450,451],{},"invite_token_expires",[239,453,454],{},"invited_by_id",[215,456,457,460],{},[236,458,459],{},"Soft delete",[236,461,462],{},[239,463,464],{},"deleted_at",[215,466,467,470],{},[236,468,469],{},"Timed suspend",[236,471,472,474],{},[239,473,291],{}," (host\u002Fauto-reactivation logic)",[215,476,477,480],{},[236,478,479],{},"Brute-force lock",[236,481,482,448,484],{},[239,483,386],{},[239,485,390],{},[215,487,488,491],{},[236,489,490],{},"Email proof",[236,492,493,496],{},[239,494,495],{},"email_verified"," (separate from status)",[360,498],{},[363,500,502],{"id":501},"related","Related",[368,504,505,509,513,517],{},[371,506,507],{},[414,508,97],{"href":98},[371,510,511],{},[414,512,92],{"href":93},[371,514,515],{},[414,516,77],{"href":78},[371,518,519,520],{},"Maintainer decision: DD-048 in ",[414,521,525],{"href":522,"rel":523},"https:\u002F\u002Fgithub.com\u002Foutlabsio\u002FoutlabsAuth\u002Fblob\u002Fmain\u002Fdocs\u002FDESIGN_DECISIONS.md",[524],"nofollow",[239,526,527],{},"docs\u002FDESIGN_DECISIONS.md",[529,530,531],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":342,"searchDepth":349,"depth":355,"links":533},[534,535,536],{"id":365,"depth":355,"text":366},{"id":422,"depth":355,"text":423},{"id":501,"depth":355,"text":502},"Active, invited, suspended, banned, deleted.","md",null,{},{"icon":115},{"title":112,"description":537},"PXK69ys7SYstNscSTFqK_OKMVZqasy8WsGaEJUi2Pjc",[545,547],{"title":107,"path":108,"stem":109,"description":546,"icon":110,"children":-1},"Attribute conditions on roles and permissions.",{"title":123,"path":124,"stem":125,"description":548,"icon":126,"children":-1},"Users, roles, permissions, entities, and tree access.",1787472745731]