def _add_default_login(): l_obj = LoginData() l_obj.Name = 'admin' l_obj.Key = 0 l_obj.Active = True l_obj.LoginFullName = 'Administrator' l_obj.LoginPasswordCurrent = 'admin' l_obj.LoginPasswordNew = '' l_obj.LoginPasswordChangeFlag = False l_obj.LoginRole = 1 LOG.warn('Adding admin login.') return l_obj
def _read_one_login(p_xml): """ @param p_xml: is the element of one login """ l_obj = LoginData() XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.LoginFullName = PutGetXML.get_text_from_xml(p_xml, 'FullName') l_obj.LoginPasswordCurrent = PutGetXML.get_text_from_xml( p_xml, 'Password') l_obj.LoginRole = PutGetXML.get_text_from_xml(p_xml, 'Role') LOG.info('Loaded login "{}"'.format(l_obj.LoginFullName)) return l_obj
def LoadConfig(self): """ Load the Mqtt xml info. """ self.m_pyhouse_obj.Computer.Web = WebInformation() # Clear before loading. self.m_pyhouse_obj.Computer.Web.Logins = LoginData() # Clear before loading. l_ret = webXml.read_web_xml(self.m_pyhouse_obj) self.m_pyhouse_obj.Computer.Web = l_ret LOG.info('Loaded Web Config')
def validate_user(self, p_obj): """ TODO - switch to twisted.cred and validate the user using twisted. we will get an avatar (twisted definition) @param p_obj: is from the browser login screen """ l_login_obj = LoginData() l_login_obj.LoginName = p_obj['Name'] l_login_obj.LoginPasswordCurrent = p_obj['PasswordCurrent'] # LOG.info('Login Attempt using: {}'.format(PrettyFormatAny.form(l_login_obj, 'Login Obj'))) # if l_login_obj.LoginName in self.m_pyhouse_obj.Computer.Web.Logins: pass for l_user in self.m_pyhouse_obj.Computer.Web.Logins.values(): # LOG.debug(PrettyFormatAny.form(l_user, 'User Obj')) if l_user.Name == l_login_obj.LoginName: # LOG.debug('User Matched') if l_user.LoginPasswordCurrent == l_login_obj.LoginPasswordCurrent: # LOG.debug('Password Matched') l_login_obj.IsLoggedIn = True l_login_obj.LoginRole = l_user.LoginRole l_login_obj.LoginFullName = l_user.LoginFullName l_topic = 'computer/browser/login' self.m_pyhouse_obj._APIs.Core.MqttAPI.MqttPublish(l_topic, l_login_obj) # lighting/web/{}/control return l_login_obj return l_login_obj
def putUsersData(self, p_json): """A new/changed/deleted user is returned. Process it and update the internal data. """ l_json = json_tools.decode_json_unicode(p_json) l_ix = int(l_json['Key']) l_delete = l_json['Delete'] if l_delete: try: del self.m_pyhouse_obj.Computer.Web.Logins[l_ix] except AttributeError: LOG.error("Failed to delete user - JSON: {}".format(l_json)) return try: l_obj = self.m_pyhouse_obj.Computer.Web.Logins[l_ix] except KeyError: l_obj = LoginData() l_obj.Name = l_json['Name'] l_obj.Active = l_json['Active'] l_obj.Key = l_ix l_obj.LoginFullName = l_json['FullName'] l_obj.LoginPasswordCurrent = l_json['Password_1'] l_obj.LoginRole = l_json['Role'] self.m_pyhouse_obj.Computer.Web.Logins[l_ix] = l_obj
def getUsersData(self): """ Get a lot of server JSON data and pass it to the client browser. """ l_users = self.m_pyhouse_obj.Computer.Web.Logins # LOG.debug(PrettyFormatAny.form(l_users, 'Login users')) if l_users == {}: l_users[0] = LoginData() l_users[0].Name = 'admin' l_users[0].LoginPasswordCurrent = 'admin' l_users[0].LoginFullName = 'Administrator' l_users[0].LoginRole = 1 self.m_pyhouse_obj.Computer.Web.Logins = l_users # LOG.debug('Creating fake user since there was none') l_json = json_tools.encode_json(l_users) # LOG.info('Fetched {}'.format(l_json)) return l_json
def setUp(self, p_root): self.m_pyhouse_obj = SetupPyHouseObj().BuildPyHouseObj(p_root) self.m_xml = SetupPyHouseObj().BuildXml(p_root) self.m_pyhouse_obj.Computer.Web = WebInformation() self.m_pyhouse_obj.Computer.Web.Logins = LoginData() self.m_api = webXml()