From 04462f337ffa2fc0f43b103e0ef848b926102c6a Mon Sep 17 00:00:00 2001 From: Tiago vasconcelos Date: Tue, 12 Oct 2021 17:04:49 +0100 Subject: [PATCH] usermanager working --- lnbits/extensions/usermanager/crud.py | 15 +++--- lnbits/extensions/usermanager/models.py | 4 +- .../templates/usermanager/_api_docs.html | 53 ++++++++++--------- .../templates/usermanager/index.html | 1 + lnbits/extensions/usermanager/views.py | 2 +- lnbits/extensions/usermanager/views_api.py | 2 +- 6 files changed, 40 insertions(+), 37 deletions(-) diff --git a/lnbits/extensions/usermanager/crud.py b/lnbits/extensions/usermanager/crud.py index a7854ad8f..e1c8aebdb 100644 --- a/lnbits/extensions/usermanager/crud.py +++ b/lnbits/extensions/usermanager/crud.py @@ -10,31 +10,27 @@ from lnbits.core.crud import ( ) from . import db -from .models import Users, Wallets +from .models import Users, Wallets, CreateUserData ### Users async def create_usermanager_user( - user_name: str, - wallet_name: str, - admin_id: str, - email: Optional[str] = None, - password: Optional[str] = None, + data: CreateUserData ) -> Users: account = await create_account() user = await get_user(account.id) assert user, "Newly created user couldn't be retrieved" - wallet = await create_wallet(user_id=user.id, wallet_name=wallet_name) + wallet = await create_wallet(user_id=user.id, wallet_name=data.wallet_name) await db.execute( """ INSERT INTO usermanager.users (id, name, admin, email, password) VALUES (?, ?, ?, ?, ?) """, - (user.id, user_name, admin_id, email, password), + (user.id, data.user_name, data.admin_id, data.email, data.password), ) await db.execute( @@ -42,7 +38,7 @@ async def create_usermanager_user( INSERT INTO usermanager.wallets (id, admin, name, "user", adminkey, inkey) VALUES (?, ?, ?, ?, ?, ?) """, - (wallet.id, admin_id, wallet_name, user.id, wallet.adminkey, wallet.inkey), + (wallet.id, data.admin_id, data.wallet_name, user.id, wallet.adminkey, wallet.inkey), ) user_created = await get_usermanager_user(user.id) @@ -59,6 +55,7 @@ async def get_usermanager_users(user_id: str) -> List[Users]: rows = await db.fetchall( "SELECT * FROM usermanager.users WHERE admin = ?", (user_id,) ) + return [Users(**row) for row in rows] diff --git a/lnbits/extensions/usermanager/models.py b/lnbits/extensions/usermanager/models.py index 7e6a95950..005ed8afb 100644 --- a/lnbits/extensions/usermanager/models.py +++ b/lnbits/extensions/usermanager/models.py @@ -6,8 +6,8 @@ class CreateUserData(BaseModel): user_name: str = Query(...) wallet_name: str = Query(...) admin_id: str = Query(...) - email: str = Query(None) - password: str = Query(None) + email: str = Query("") + password: str = Query("") class Users(BaseModel): diff --git a/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html b/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html index 74640bb80..1944416b4 100644 --- a/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html +++ b/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html @@ -42,8 +42,8 @@ JSON list of users
Curl example
curl -X GET {{ request.url_root }}usermanager/api/v1/users -H "X-Api-Key: {{ - g.user.wallets[0].inkey }}" + >curl -X GET {{ request.url_root }}usermanager/api/v1/users -H + "X-Api-Key: {{ user.wallets[0].inkey }}" @@ -62,8 +62,9 @@ JSON list of users
Curl example
curl -X GET {{ request.url_root }}usermanager/api/v1/users/<user_id> -H - "X-Api-Key: {{ g.user.wallets[0].inkey }}" + >curl -X GET {{ request.url_root + }}usermanager/api/v1/users/<user_id> -H "X-Api-Key: {{ + user.wallets[0].inkey }}" @@ -84,8 +85,9 @@ JSON wallet data
Curl example
curl -X GET {{ request.url_root }}usermanager/api/v1/wallets/<user_id> -H - "X-Api-Key: {{ g.user.wallets[0].inkey }}" + >curl -X GET {{ request.url_root + }}usermanager/api/v1/wallets/<user_id> -H "X-Api-Key: {{ + user.wallets[0].inkey }}" @@ -106,8 +108,9 @@ JSON a wallets transactions
Curl example
curl -X GET {{ request.url_root }}usermanager/api/v1/wallets<wallet_id> -H - "X-Api-Key: {{ g.user.wallets[0].inkey }}" + >curl -X GET {{ request.url_root + }}usermanager/api/v1/wallets<wallet_id> -H "X-Api-Key: {{ + user.wallets[0].inkey }}" @@ -147,11 +150,11 @@ >
Curl example
curl -X POST {{ request.url_root }}usermanager/api/v1/users -d '{"admin_id": "{{ - g.user.id }}", "wallet_name": <string>, "user_name": - <string>, "email": <Optional string>, "password": < - Optional string>}' -H "X-Api-Key: {{ g.user.wallets[0].inkey }}" -H - "Content-type: application/json" + >curl -X POST {{ request.url_root }}usermanager/api/v1/users -d + '{"admin_id": "{{ user.id }}", "wallet_name": <string>, + "user_name": <string>, "email": <Optional string>, + "password": < Optional string>}' -H "X-Api-Key: {{ + user.wallets[0].inkey }}" -H "Content-type: application/json" @@ -185,10 +188,10 @@ >
Curl example
curl -X POST {{ request.url_root }}usermanager/api/v1/wallets -d '{"user_id": - <string>, "wallet_name": <string>, "admin_id": "{{ - g.user.id }}"}' -H "X-Api-Key: {{ g.user.wallets[0].inkey }}" -H - "Content-type: application/json" + >curl -X POST {{ request.url_root }}usermanager/api/v1/wallets -d + '{"user_id": <string>, "wallet_name": <string>, + "admin_id": "{{ user.id }}"}' -H "X-Api-Key: {{ user.wallets[0].inkey + }}" -H "Content-type: application/json" @@ -209,8 +212,9 @@ {"X-Api-Key": <string>}
Curl example
curl -X DELETE {{ request.url_root }}usermanager/api/v1/users/<user_id> -H - "X-Api-Key: {{ g.user.wallets[0].inkey }}" + >curl -X DELETE {{ request.url_root + }}usermanager/api/v1/users/<user_id> -H "X-Api-Key: {{ + user.wallets[0].inkey }}" @@ -226,8 +230,9 @@ {"X-Api-Key": <string>}
Curl example
curl -X DELETE {{ request.url_root }}usermanager/api/v1/wallets/<wallet_id> - -H "X-Api-Key: {{ g.user.wallets[0].inkey }}" + >curl -X DELETE {{ request.url_root + }}usermanager/api/v1/wallets/<wallet_id> -H "X-Api-Key: {{ + user.wallets[0].inkey }}" @@ -248,9 +253,9 @@ {"X-Api-Key": <string>}
Curl example
curl -X POST {{ request.url_root }}usermanager/api/v1/extensions -d '{"userid": - <string>, "extension": <string>, "active": - <integer>}' -H "X-Api-Key: {{ g.user.wallets[0].inkey }}" -H + >curl -X POST {{ request.url_root }}usermanager/api/v1/extensions -d + '{"userid": <string>, "extension": <string>, "active": + <integer>}' -H "X-Api-Key: {{ user.wallets[0].inkey }}" -H "Content-type: application/json" diff --git a/lnbits/extensions/usermanager/templates/usermanager/index.html b/lnbits/extensions/usermanager/templates/usermanager/index.html index 446ee51d5..6fbe9686d 100644 --- a/lnbits/extensions/usermanager/templates/usermanager/index.html +++ b/lnbits/extensions/usermanager/templates/usermanager/index.html @@ -368,6 +368,7 @@ self.users = _.reject(self.users, function (obj) { return obj.id == userId }) + self.getWallets() }) .catch(function (error) { LNbits.utils.notifyApiError(error) diff --git a/lnbits/extensions/usermanager/views.py b/lnbits/extensions/usermanager/views.py index d58a98265..395e0c0ba 100644 --- a/lnbits/extensions/usermanager/views.py +++ b/lnbits/extensions/usermanager/views.py @@ -10,4 +10,4 @@ from . import usermanager_ext, usermanager_renderer @usermanager_ext.get("/", response_class=HTMLResponse) async def index(request: Request, user: User = Depends(check_user_exists)): - return await render_template("usermanager/index.html", user=user.dict()) + return usermanager_renderer().TemplateResponse("usermanager/index.html", {"request": request,"user": user.dict()}) diff --git a/lnbits/extensions/usermanager/views_api.py b/lnbits/extensions/usermanager/views_api.py index e8a78bf19..caa513c82 100644 --- a/lnbits/extensions/usermanager/views_api.py +++ b/lnbits/extensions/usermanager/views_api.py @@ -50,7 +50,7 @@ async def api_usermanager_user(user_id, wallet: WalletTypeInfo = Depends(get_key # } # ) async def api_usermanager_users_create(data: CreateUserData, wallet: WalletTypeInfo = Depends(get_key_type)): - user = await create_usermanager_user(**data) + user = await create_usermanager_user(data) full = user.dict() full["wallets"] = [wallet.dict() for wallet in await get_usermanager_users_wallets(user.id)] return full