| 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 |