Esempio n. 1
0
from time import time

from . import r
from config import server_config
import jwt

USER_TOKEN_PREFIX = server_config.get('server', 'user_token_prefix')
SECERT = server_config.get('server', 'secret')
JWT_ALGORITHM = 'HS256'


def get_user_token(user_id, username):
    return {
        'userID': user_id,
        'username': username,
        'createTime': time(),
    }


def add_token(user_id, username, expire=2592000):
    token = jwt.encode(get_user_token(user_id, username),
                       SECERT,
                       algorithm=JWT_ALGORITHM).decode()
    r.set(USER_TOKEN_PREFIX + user_id, token, expire)
    return token


def get_token(user_id):
    # return None if find nothing
    return r.get(USER_TOKEN_PREFIX + user_id)
Esempio n. 2
0
from flask_mongoengine import MongoEngine
from config import server_config

db_name = server_config.get('mongo', 'db')
db_host = server_config.get('mongo', 'host')
db_port = server_config.get('mongo', 'port')

print('Connecting mongo server ' + db_host + ':' + db_port + ' using db:' +
      db_name)

db = MongoEngine()
Esempio n. 3
0
from time import time
import jwt

from . import r
from config import server_config
from constant import UserNetworkSetting

USER_NETWORK_PREFIX = server_config.get('server', 'user_network_prefix')
SECERT = server_config.get('server', 'secret')
JWT_ALGORITHM = 'HS256'


def add_network_settings(user_id, network_setting: UserNetworkSetting, expire=2592000):
    r.set(USER_NETWORK_PREFIX + user_id, network_setting, expire)


def get_network_settings(user_id):
    # return None if find nothing
    return r.get(USER_NETWORK_PREFIX + user_id)


def remove_network_settings(user_id):
    r.delete(USER_NETWORK_PREFIX + user_id)
Esempio n. 4
0
from flask import Flask
from flask_restplus import Resource, Api

from model import db
from controller.user import user_api
from controller.picture import picture_api
from config import server_config

app = Flask(__name__)
# init db settings
app.config['MONGODB_SETTINGS'] = {
    'db': server_config.get('mongo', 'db'),
    'host': server_config.get('mongo', 'host'),
    'port': int(server_config.get('mongo', 'port')),
    'username': server_config.get('mongo', 'username'),
    'password': server_config.get('mongo', 'password'),
}
db.init_app(app)

server_api = Api(app, version='1.0.0', title='adapt-app', doc='/doc/')

# add namespaces (controllers) here
server_api.add_namespace(user_api)
server_api.add_namespace(picture_api)


@server_api.route('/hello')
class HelloSimple(Resource):
    def get(self):
        return {'hello': 'world'}
Esempio n. 5
0
from redis import Redis

from config import server_config

# redis settings
db = server_config.get('redis', 'db')
host = server_config.get('redis', 'host')
port = server_config.get('redis', 'port')

print('Connecting redis server ' + host + ':' + port + ' using db:' + db)

r = Redis(host, port, db)
Esempio n. 6
0
from common import md5

from model.user import User
from config import server_config
from server_error import ServerError, ServerErrorCodes

hash_secret = server_config.get('server', 'secret')


def create_user(username, password, email):
    # create a user, but check if user exists first
    if User.objects(username=username).count() > 0:
        raise ServerError(ServerErrorCodes.ERR_INPUT_ERROR,
                          message='username already exists')

    # md5 hash the string
    hashed_password = md5(password, hash_secret)

    print(hashed_password)

    # save the user
    user = User()
    user.username = username
    user.password = hashed_password
    user.email = email
    user.save()

    return None
Esempio n. 7
0
from flask import Flask
from flask_restplus import Resource, Api

from model import db
from controller.user import user_api
from config import server_config

app = Flask(__name__)
# init db settings
app.config['MONGODB_SETTINGS'] = {
    'db': server_config.get('mongo', 'db'),
    'host': server_config.get('mongo', 'host'),
    'port': int(server_config.get('mongo', 'port'))
}
db.init_app(app)

server_api = Api(app, version='1.0.0', title='adapt-app', doc='/doc/')

# add namespaces (controllers) here
server_api.add_namespace(user_api)


@server_api.route('/hello')
class HelloSimple(Resource):
    def get(self):
        return {'hello': 'world'}


SERVER_HOST = server_config.get('server', 'host')
SERVER_PORT = server_config.get('server', 'port')
Esempio n. 8
0
from functools import wraps
from flask import request, current_app, g
import jwt

from config import server_config
from service import user as user_service
from constant import UserRole

SECRET = server_config.get('server', 'secret')


# get authorization header from that magical request
def login_required(roles=[UserRole.USER]):
    def real_deco(function):
        @wraps(function)
        def decorator(*args, **kwargs):
            auth = request.headers.get('Authorization')
            current_app.logger.info('authorization:' + auth)
            try:
                token_data = jwt.decode(auth, SECRET, algorithms='HS256')
                current_app.logger.info('token_data:' + str(token_data))
            except Exception:
                raise Exception('Invalid token')

            if not token_data:
                raise Exception('invalid token')
            if not token_data['userID']:
                raise Exception('invalid token')

            # search for the user
            user = user_service.find_user_by_user_id_for_token(