Example #1
0
def authentication(role, post_data):
    """
    Register a patient in the system. The post data is in json format.
    :param post_data: dict
    :returns: a status, a str( patient's info on success, err info on failure)
    """
    # print(post_data)
    auth_dict = {}
    try:
        logger.debug('in authentication')

        user = LoginModel.get(LoginModel.username==post_data['username'],
                                LoginModel.role==role)
    except Exception as ex:
        logger.error('Exception: ', ex)
        return 0, 'auth failed'
    else:
        logger.debug("user.password:{}, post_data['password']:{}".format(
            user.password, post_data['password']))
        if user.password==post_data['password']:
            try:
                # auth_dict['token'] = get_token(post_data['username'], role)
                token = get_token(post_data['username'], role)
            except Exception as ex:
                logger.error('Exception: ', ex)
                return 0, 'auth failed, get token failed'
            else:
                # auth_json = json.dumps(auth_dict)
                logger.debug(token)
                return 1, token
        else:
            return 0, 'auth failed, password not match'
Example #2
0
    def test_auth_success(self):
        logger.debug('in test_auth_success')
        adminid = 'admin_{}'.format(str(uuid.uuid4()))
        LoginModel.create(
            username=adminid,
            password='******',
            role='admin'
            )
        adm_login = {
                'username':adminid,
                'password':'******',  }

        success_token = mock.Mock(return_value='admintoken')
        auth.get_token = success_token
        self.assertEqual(auth.authentication('admin', adm_login)[0], 1)
        self.assertEqual(auth.authentication('admin', adm_login)[1], 'admintoken')
Example #3
0
    def test_auth_fail(self):
        logger.debug('in test_auth_success fail')
        adminid = 'admin_{}'.format(str(uuid.uuid4()))
        LoginModel.create(
            username=adminid,
            password='******',
            role='admin'
            )
        adm_login = {
                'username':adminid,
                'password':'******',  }

        fail_token = mock.Mock(return_value='admintoken')
        auth.get_token = fail_token
        self.assertEqual(auth.authentication('admin', adm_login)[0], 0)
        self.assertEqual(auth.authentication('admin', adm_login)[1], 'auth failed, password not match')
        self.assertEqual(auth.authentication('doctor', adm_login)[0], 0)
        self.assertEqual(auth.authentication('doctor', adm_login)[1], 'auth failed')
Example #4
0
def register_doctor(post_data):
    """
    Register a doctor in the system. The post data is a dict.

    :param post_data: dict
    :returns: a status, a str( doctor's info on success, err info on failure)
    """
    # print(post_data)
    doctor = ''
    try:
        logger.debug('in register_doctor')

        with database.atomic():
            doctor = DoctorModel.create_by_dict(post_data)
            logger.debug(doctor)
            logger.debug('in database.atomic')

    # except peewee.IntegrityError:
    #     logger.warning('in doctor model create except')

        # # `username` is a unique column, so this username already exists,
        # # making it safe to call .get().
        # old_user = AccountModel.get(AccountModel.username == username)
        # logger.warning('user exists...')
        # resp_dict['info'] = 'user exists, did not create user:%s' % username
        # resp.status = falcon.HTTP_409
        # try:
        #     change_user = AccountModel.get(AccountModel.username==username,
        #                     AccountModel.password==password)
        # except:
        #     logger.debug('change user data failed...')
    except Exception as ex:
        logger.error('Exception: ', ex)
        q = DoctorModel.delete().where(DoctorModel.email==doctor)
        q.execute()
        return 0, 'create doctor failed, did not create doctor', ''
    try:
        with database.atomic():
            user = LoginModel.create_by_dict('doctor', post_data)
            logger.debug(doctor)
            logger.debug('in database.atomic')
    # except peewee.IntegrityError:
    #     logger.warning('in doctor model create except')

        # # `username` is a unique column, so this username already exists,
        # # making it safe to call .get().
        # old_user = AccountModel.get(AccountModel.username == username)
        # logger.warning('user exists...')
        # resp_dict['info'] = 'user exists, did not create user:%s' % username
        # resp.status = falcon.HTTP_409
        # try:
        #     change_user = AccountModel.get(AccountModel.username==username,
        #                     AccountModel.password==password)
        # except:
        #     logger.debug('change user data failed...')
    except Exception as ex:
        logger.error('Exception: ', ex)
        q = LoginModel.delete().where(LoginModel.username==doctor)
        q.execute()
        return 0, 'create doctor failed, did not create doctor', ''

    else:
        return 1, str(doctor), str(user.password)