mirror of
https://gitlab.com/fabinfra/fabaccess/pyfabapi.git
synced 2025-03-12 06:41:42 +01:00
User system things
This commit is contained in:
parent
4b00313372
commit
c8ed03caec
@ -1,7 +0,0 @@
|
|||||||
import os
|
|
||||||
import capnp
|
|
||||||
|
|
||||||
path = os.path.dirname(os.path.abspath(__file__))
|
|
||||||
|
|
||||||
connection_capnp = capnp.load(path + '/schema/connection.capnp')
|
|
||||||
authenticationsystem = capnp.load(path + '/schema/authenticationsystem.capnp')
|
|
@ -2,9 +2,9 @@ import asyncio
|
|||||||
import socket
|
import socket
|
||||||
import ssl
|
import ssl
|
||||||
|
|
||||||
from fabapi import api
|
import capnp
|
||||||
connection_capnp = api.connection_capnp
|
from .schema import connection_capnp
|
||||||
authenticationsystem_capnp = api.authenticationsystem
|
from .schema import authenticationsystem_capnp
|
||||||
|
|
||||||
async def myreader(client, reader):
|
async def myreader(client, reader):
|
||||||
while True:
|
while True:
|
||||||
|
11
fabapi/session.py
Normal file
11
fabapi/session.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
class Session:
|
||||||
|
"""
|
||||||
|
A connected API session
|
||||||
|
|
||||||
|
Implements housekeeping functionality around conneciton keep-alive and re-establishment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
session = None
|
||||||
|
|
||||||
|
def __init__(self, session):
|
||||||
|
self.session = session
|
@ -1,12 +1,27 @@
|
|||||||
|
import capnp
|
||||||
|
from .schema import usersystem_capnp
|
||||||
|
from .schema import role_capnp
|
||||||
|
|
||||||
|
async def add_user(usersystem, username, password, roles=None):
|
||||||
class UserSystem:
|
|
||||||
"""
|
"""
|
||||||
Higher-level API for managing users
|
Add a new user with a given username and password.
|
||||||
|
|
||||||
|
If provided a given list of roles is granted to the newly created user.
|
||||||
|
Returns the new user
|
||||||
"""
|
"""
|
||||||
|
|
||||||
api_usersystem = None
|
new_user_fallible = await usersystem.manage.addUserFallible(username, password).a_wait()
|
||||||
|
if new_user_fallible.which._str() == "successful":
|
||||||
def __init__(self, usersystem):
|
new_user = new_user_fallible.successful
|
||||||
self.api_usersystem = usersystem
|
if roles:
|
||||||
|
for r in roles:
|
||||||
|
new_user.admin.addRole(role_capnp.Role(name=r))
|
||||||
|
return new_user
|
||||||
|
else:
|
||||||
|
return new_user_fallible.failed.error
|
||||||
|
|
||||||
|
async def del_user(usersystem, username):
|
||||||
|
user_optional = await usersystem.search.getUserByName(username).a_wait()
|
||||||
|
if user_optional.which._str() == "just":
|
||||||
|
user = user_optional.just
|
||||||
|
await usersystem.manage.removeUser(user).a_wait()
|
||||||
|
14
test.py
14
test.py
@ -1,6 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import fabapi
|
import fabapi
|
||||||
|
import fabapi.user_system
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
session = await fabapi.connect("localhost", 59661, "Testuser", "secret")
|
session = await fabapi.connect("localhost", 59661, "Testuser", "secret")
|
||||||
@ -8,6 +8,18 @@ async def main():
|
|||||||
ma = await info.info.getMachineURN("urn:fabaccess:resource:Another").a_wait()
|
ma = await info.info.getMachineURN("urn:fabaccess:resource:Another").a_wait()
|
||||||
print(ma)
|
print(ma)
|
||||||
|
|
||||||
|
# Add an user with the given roles
|
||||||
|
roles = [
|
||||||
|
"somerole", "testrole"
|
||||||
|
]
|
||||||
|
user = await fabapi.user_system.add_user(session.userSystem, "ANewUser", "ANewSecret", roles=roles)
|
||||||
|
|
||||||
|
# As you can see, Roles were attached
|
||||||
|
await user.info.listRoles().a_wait()
|
||||||
|
|
||||||
|
# Delete the same user again
|
||||||
|
await fabapi.user_system.del_user(session.userSystem, "ANewUser")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
loop.run_until_complete(main())
|
loop.run_until_complete(main())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user