Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

expert_core

Requirements

  • python 3.10+
pip install pip install git+ssh://git@github.com/expertspec/expert_core.git@{tag}

Permissions

1. Init

fromfastapiimportFastAPIfromexpert_core.pluginsimportinit_keycloakapp=FastAPI()
@app.on_event("startup")asyncdefstartup():
awaitinit_keycloak(app)

2. Get current user

fromfastapiimportDependsfromexpert_core.plugins.keycloakimportdepends_authentication, OIDCUser@app.get("/user")asyncdefget_user(user: OIDCUser=Depends(depends_authentication())):
user_id=user.sub

3. Set user permissions

fromfastapiimportDepends, Pathfrompydantic.typesimportUUID4fromexpert_core.plugins.keycloakimportdepends_authentication, depends_idp, Keycloak, OIDCUser@app.post("/chat/{item_id}/set")asyncdefset_user_permissions(
chat_id: UUID4=Path(..., alias="item_id"),
user: OIDCUser=Depends(depends_authentication()),
idp: Keycloak=Depends(depends_idp)
):
_chat_id=str(chat_id)
awaitidp.update_permissions(user, chat_id, permissions="rw------")

4. Check user permissions

fromfastapiimportDepends, Pathfrompydantic.typesimportUUID4fromexpert_core.plugins.keycloakimportdepends_permissions, OIDCUser@app.get("/chat/{chat_id}/get")asyncdefcheck_user_permissions(
chat_id: UUID4,
user: OIDCUser=Depends(depends_permissions("rw.*", param="chat_id", in_="path")),
):
pass

5. Unset user permissions

fromfastapiimportDepends, Pathfrompydantic.typesimportUUID4fromexpert_core.plugins.keycloakimportdepends_authentication, depends_idp, Keycloak, OIDCUser@app.delete("/chat/{item_id}/unset")asyncdefunset_user_permissions(
chat_id: UUID4=Path(..., alias="item_id"),
user: OIDCUser=Depends(depends_authentication()),
idp: Keycloak=Depends(depends_idp)
):
_chat_id=str(chat_id)
awaitidp.update_permissions(user, chat_id)
# orawaitidp.update_permissions(user, chat_id, permissions=None)
# orawaitidp.update_permissions(user, chat_id, permissions="")

6. Set inherit user permissions

fromfastapiimportDepends, Pathfrompydantic.typesimportUUID4fromexpert_core.plugins.keycloakimportdepends_authentication, depends_idp, Keycloak, OIDCUser@app.post("/chat/{chat_id}/message/{message_id}/set")asyncdefset_inherit_user_permissions(
chat_id: UUID4,
message_id: UUID4,
user: OIDCUser=Depends(depends_authentication()),
idp: Keycloak=Depends(depends_idp)
):
_chat_id=str(chat_id)
_message_id=str(message_id)
awaitidp.update_permissions(user, chat_id, _message_id, permissions="rwx-----")

7. Check inherit user permissions

fromfastapiimportDepends, Pathfrompydantic.typesimportUUID4fromexpert_core.plugins.keycloakimportdepends_permissions, OIDCUser@app.get("/chat/{chat_id}/message/{message_id}/get")asyncdefcheck_inherit_user_permissions(
chat_id: UUID4,
message_id: UUID4,
user: OIDCUser=Depends(
depends_permissions(
"r.*",
param=["chat_id", "message_id"],
in_="path",
),
),
''' or  user: OIDCUser = Depends( depends_permissions( "r.*", param=["chat_id", "message_id"], in_=["path", "path"], ), ), '''
):
pass

other examples:

depends_permissions("rw.*", param="chat_id", in_="body")
depends_permissions("rw.*", param=["chat_id", "message_id"], in_="body")
depends_permissions("rw.*", param=["chat_id", "message_id"], in_=["body", "path"])
depends_permissions("rw.*", param=["chat_id", "message_id", "user_id"], in_=["path", "query", "body"])

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages