subiquity/subiquitycore/models/identity.py

110 lines
2.9 KiB
Python
Raw Normal View History

# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
from subiquitycore.model import ModelPolicy
from subiquitycore.utils import crypt_password
log = logging.getLogger('subiquitycore.models.identity')
class LocalUser(object):
def __init__(self, result):
self._realname = result.get('realname')
self._username = result.get('username')
self._password = result.get('password')
self._cpassword = result.get('confirm_password')
self._ssh_import_id = None
if 'ssh_import_id' in result:
self._ssh_import_id = result.get('ssh_import_id')
@property
def realname(self):
return self._realname
@property
def username(self):
return self._username
@property
def password(self):
return self._password
@property
def cpassword(self):
return self._cpassword
@property
def ssh_import_id(self):
return self._ssh_import_id
def __repr__(self):
return "%s <%s>" % (self._realname, self._username)
class IdentityModel(ModelPolicy):
""" Model representing user identity
"""
signals = [
("Identity view",
'menu:identity:main',
'identity'),
("Login view",
'menu:identity:login:main',
'login')
]
identity_menu = [
("Username",
"identity:username",
"validate_username"),
("Password",
"identity:password",
"validate_password"),
("Confirm Password",
"identity:confirm-password",
"validate_confirm_password")
]
def __init__(self, opts):
self.opts = opts
def get_signals(self):
return self.signals
def get_menu(self):
return self.identity_menu
def get_signal_by_name(self, selection):
for x, y, z in self.get_menu():
if x == selection:
return y
def add_user(self, result):
if result:
self._user = LocalUser(result)
else:
self._user = None
@property
def user(self):
return self._user
def encrypt_password(self, passinput):
return crypt_password(passinput)
def __repr__(self):
return "<LocalUser: {}>".format(self.user)