Total Complexity | 8 |
Total Lines | 32 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | from asyncua.server.users import User, UserRole |
||
2 | from asyncua.crypto.certificate_handler import CertificateHandler |
||
3 | |||
4 | |||
5 | class UserManager: |
||
6 | def get_user(self, iserver, username=None, password=None, certificate=None): |
||
7 | raise NotImplementedError |
||
8 | |||
9 | |||
10 | class PermissiveUserManager: |
||
11 | def get_user(self, iserver, username=None, password=None, certificate=None): |
||
12 | """ |
||
13 | Default user_manager, does nothing much but check for admin |
||
14 | """ |
||
15 | if username and iserver.allow_remote_admin and username in ("admin", "Admin"): |
||
16 | return User(role=UserRole.Admin) |
||
17 | else: |
||
18 | return User(role=UserRole.User) |
||
19 | |||
20 | |||
21 | class CertificateUserManager: |
||
22 | """ |
||
23 | Certificate user manager, takes a certificate handler with its associated users and provides those users. |
||
24 | """ |
||
25 | def __init__(self, certificate_handler: CertificateHandler): |
||
26 | self.certificate_handler = certificate_handler |
||
27 | |||
28 | def get_user(self, iserver, username=None, password=None, certificate=None): |
||
29 | if certificate is None: |
||
30 | return None |
||
31 | return self.certificate_handler.get_user(certificate) |
||
32 |