Passed
Pull Request — master (#209)
by
unknown
03:30 queued 01:11
created

UserManager.get_user()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 5
dl 0
loc 2
rs 10
c 0
b 0
f 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