Beispiel #1
0
def initialize():
    
    if config['TESTING']:
        for k in debug_config.keys():
            config[k] = debug_config[k]
    
    # initialize Data Storage
    userstore = UserStore()
    userstore.set_database_path(config.get('DATABASE_PATH'))
    
    
    # initialize loggers
    logger = logging.getLogger('auth')
    handler = logging.FileHandler(config.get('LOG_FILE'))
    formatter = logging.Formatter(config['LOG']['FORMAT'])
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)
    
    logger = logging.getLogger('service')
    handler = logging.FileHandler(config.get('LOG_FILE'))
    formatter = logging.Formatter(config['LOG']['FORMAT'])
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)
Beispiel #2
0
def add_user():
    response = create_generic_response_dict()
    
    if request.method == 'POST' or request.method == 'PUT':
        
        # create user
        data = request.form
        username = data.get('username',None)
        password = data.get('password', None)
        
        if username == None or password == None:
            # Let the caller know that username or password can not be empty.
            logger.info("Caught add_user request["+request.method+"] with insufficient parameters.")
            response['error'] = True
            response['message'] = 'Username and password can not be empty'
            return jsonify(response)
        
        first_name = data.get('firstname','')
        last_name = data.get('lastname','')
        email = data.get('email','')
        
        # Create user and assign values
        user = User(username, password)
        user.first_name = first_name
        user.last_name = last_name
        user.email = email
        
        if user.validate():
            datastore = UserStore()
            if not datastore.has_user(user) and not datastore.is_username_taken(user.username):
                # if doesn't exist then register user
                datastore.save_user(user);
                # success
                logger.info('Caught add_user request['+request.method+'] - User['+user.username+'] was successfully registered.')
                response['message'] = 'User was successfully created.'
                response['data'] = user.get_values_as_dict()
            else:
                # failed because it already exists?
                logger.info('Caught add_user request['+request.method+'] - User['+user.username+'] was already registered.')
                response['error'] = True
                response['message'] = 'User was not successfully created.  User information is not unique.'
            pass
        else:
            # Not valid
            logger.info('Caught add_user request['+request.method+'] - User['+user.username+'] did not validate correctly.')
            response['error'] = True
            response['message'] = 'User information was not validated correctly'
            response['data'] = user.get_errors()
            pass
        
    return jsonify(response)
Beispiel #3
0
class DataStoreTestCase(unittest.TestCase):
    
    database_path = "temp.db"
    provider = None
    
    def setUp(self):
        # userprovider.initialize(self.database_path)
        self.provider = UserStore()
        self.provider.set_database_path(self.database_path)
        pass

    def tearDown(self):
        #os.remove(self.database_path)
        self.provider.close()
        self.provider = None
        os.unlink(self.database_path)
        pass

    def testInitialize(self):
        
        
        # Check DB was created
        self.assertTrue(os.path.isfile(self.database_path), 'Temporary db should\'ve been created')
        
        # Check user_table was created.
        query = "SELECT * FROM sqlite_master WHERE type='table' AND name='user_table'"
        cursor = self.provider.__get_cursor__()
        cursor.execute(query)
        list = cursor.fetchall()
        self.assertTrue(len(list) > 0, "User_table should've been created")
        
    def test_add_user(self):
        
        data = {
                'username': '******',
                'password': '******'
                }
        
        # Create user
        user = User(data['username'], data['password'])
        self.provider.save_user(user)
        
        # Get user back and check if the same
        saved_user = self.provider.get_user(data['username'])
        self.assertEqual(user, saved_user, "Users should've been same")
        
        self.assertTrue(self.provider.has_user(user), "User should already exists")
        self.assertTrue(self.provider.is_username_taken(user.username), "Username should already exists")
Beispiel #4
0
def get_user(user_id):
    response = create_generic_response_dict()
    logger.info('Caught get request for user_id:' + str(user_id))
    if request.method == 'GET':
        # TODO need permission check
        datastore = UserStore()
        user = datastore.get_user_by_id(user_id)
        
        if user == None:
            response['error'] = True
            response['message'] = 'User with that ID does not exist.'
        else:
            response['message'] = 'User was successfully retrieved.'
            response['data'] = user.get_values_as_dict()
    
    return jsonify(response)
Beispiel #5
0
def logout_user(user_id):
    response = create_generic_response_dict()
    
    if request.method == 'POST':
        datastore = UserStore()
        user = datastore.get_user_by_id(user_id)
        
        if user == None:
            response['error'] = True
            response['message'] = 'User was not found.'
        else:
            token_store = AuthTokenStore()
            token_store.kill_user_token(user)
            response['message'] = 'User logged out successfully'
    
    logger.info('Caught logout request for user_id:' + str(user_id) + '->' + response['message'])
    return jsonify(response)
Beispiel #6
0
def delete_user(user_id):
    logger.info('Caught delete request for user_id:' + str(user_id))
    response = create_generic_response_dict()
    if request.method == 'DELETE':
        # need permission check
        datastore = UserStore()
        user = datastore.get_user_by_id(user_id)
        
        if user == None:
            response['error'] = True
            response['message'] = "User does not exists."            
        else:
            datastore.deactivate_user(user)
            response['message'] = "User was successfully deleted."

    logger.info('Caught delete request for user_id:' + str(user_id) + '->' + response['message'])
    return jsonify(response)
Beispiel #7
0
def login_user(user_id):
    response = create_generic_response_dict()
    
    if request.method == 'POST':
        data = request.form
        password = data.get("password", None)
        
        datastore = UserStore()
        user = datastore.get_user_by_id(user_id)
        
        if user == None or password == None or not security.validate_login(user, password):
            response['error'] = True
            response['message'] = 'User and password combination does not validate.'
        else:
            auth_token = AuthTokenStore().register(user)
            user_data = user.get_values_as_dict()
            user_data['token'] = auth_token.get_values_as_dict()
            response['data'] = user_data
            response['message'] = 'User successfully logged in'
            
    logger.info('Caught login request for user_id:' + str(user_id) + '->' + response['message'])
    return jsonify(response)
Beispiel #8
0
 def setUp(self):
     # userprovider.initialize(self.database_path)
     self.provider = UserStore()
     self.provider.set_database_path(self.database_path)
     pass
 def __init__(self, dbname=DEFAULT_DATABASE_NAME):
     self._db = connect(dbname)
     self.userstore = UserStore(self._db)
     self.messagestore = MessageStore(self._db)