Exemple #1
0
async def check_password_answer(request):
    #session = await get_session(request)
    queries = request.rel_url.query
    email = queries['email']
    answer = queries['answer']
    m = hashlib.sha256()
    m.update(answer.encode('utf-16be'))
    answerhash = m.hexdigest()
    root_jobs_dir = au.get_jobs_dir()
    admin_db_path = os.path.join(root_jobs_dir, 'admin.sqlite')
    db = await aiosqlite3.connect(admin_db_path)
    cursor = await db.cursor()
    await cursor.execute(
        'select * from users where email="{}" and answerhash="{}"'.format(
            email, answerhash))
    r = await cursor.fetchone()
    if r is not None:
        temppassword = '******'
        m = hashlib.sha256()
        m.update(temppassword.encode('utf-16be'))
        temppasswordhash = m.hexdigest()
        await cursor.execute(
            'update users set passwordhash="{}" where email="{}"'.format(
                temppasswordhash, email))
        await db.commit()
        await cursor.close()
        await db.close()
        return web.json_response({'success': True, 'msg': temppassword})
    else:
        await cursor.close()
        await db.close()
        return web.json_response({'success': False, 'msg': 'Wrong answer'})
Exemple #2
0
async def change_password(request):
    '''
    session = await get_session(request)
    email = session['username']
    '''
    email = 'default'
    root_jobs_dir = au.get_jobs_dir()
    admin_db_path = os.path.join(root_jobs_dir, 'admin.sqlite')
    db = await aiosqlite3.connect(admin_db_path)
    cursor = await db.cursor()
    queries = request.rel_url.query
    oldpassword = queries['oldpassword']
    newpassword = queries['newpassword']
    m = hashlib.sha256()
    m.update(oldpassword.encode('utf-16be'))
    oldpasswordhash = m.hexdigest()
    await cursor.execute(
        'select * from users where email="{}" and passwordhash="{}"'.format(
            email, oldpasswordhash))
    r = await cursor.fetchone()
    if r is None:
        await cursor.close()
        await db.close()
        return web.json_response('User authentication failed.')
    else:
        m = hashlib.sha256()
        m.update(newpassword.encode('utf-16be'))
        newpasswordhash = m.hexdigest()
        await cursor.execute(
            'update users set passwordhash="{}" where email="{}"'.format(
                newpasswordhash, email))
        await db.commit()
        await cursor.close()
        await db.close()
        return web.json_response('success')
Exemple #3
0
async def login(request):
    #session = await new_session(request)
    queries = request.rel_url.query
    username = queries['username']
    password = queries['password']
    m = hashlib.sha256()
    m.update(password.encode('utf-16be'))
    passwordhash = m.hexdigest()
    root_jobs_dir = au.get_jobs_dir()
    admin_db_path = os.path.join(root_jobs_dir, 'admin.sqlite')
    db = await aiosqlite3.connect(admin_db_path)
    cursor = await db.cursor()
    await cursor.execute(
        'select * from users where email="{}" and passwordhash="{}"'.format(
            username, passwordhash))
    r = await cursor.fetchone()
    if r is not None:
        response = 'success'
        '''
        session['username'] = username
        session['logged'] = True
        '''
        await create_user_dir(request, username)
    else:
        response = 'fail'
    await cursor.close()
    await db.close()
    return web.json_response(response)
Exemple #4
0
async def signup(request):
    #session = await new_session(request)
    queries = request.rel_url.query
    username = queries['username']
    password = queries['password']
    m = hashlib.sha256()
    m.update(password.encode('utf-16be'))
    passwordhash = m.hexdigest()
    question = queries['question']
    answer = queries['answer']
    m = hashlib.sha256()
    m.update(answer.encode('utf-16be'))
    answerhash = m.hexdigest()
    root_jobs_dir = au.get_jobs_dir()
    admin_db_path = os.path.join(root_jobs_dir, 'admin.sqlite')
    db = await aiosqlite3.connect(admin_db_path)
    cursor = await db.cursor()
    await cursor.execute(
        'select * from users where email="{}"'.format(username))
    r = await cursor.fetchone()
    if r is not None:
        return web.json_response('already registered')
    await cursor.execute(
        'insert into users values ("{}", "{}", "{}", "{}")'.format(
            username, passwordhash, question, answerhash))
    await db.commit()
    await cursor.close()
    await db.close()
    '''
    session['username'] = username
    session['logged'] = True
    '''
    await create_user_dir(request, username)
    return web.json_response('success')
def reset_system_conf(request):
    d = au.read_system_conf_template()
    md = au.get_modules_dir()
    jobs_dir = au.get_jobs_dir()
    d['modules_dir'] = md
    d['jobs_dir'] = jobs_dir
    au.write_system_conf_file(d)
    return web.json_response({'status': 'success', 'dict': yaml.dump(d)})
Exemple #6
0
async def get_password_question(request):
    #session = await get_session(request)
    queries = request.rel_url.query
    email = queries['email']
    root_jobs_dir = au.get_jobs_dir()
    admin_db_path = os.path.join(root_jobs_dir, 'admin.sqlite')
    db = await aiosqlite3.connect(admin_db_path)
    cursor = await db.cursor()
    await cursor.execute(
        'select question from users where email="{}"'.format(email))
    r = await cursor.fetchone()
    if r is None:
        return web.json_response({'status': 'fail', 'msg': 'No such email'})
    answer = r[0]
    await cursor.close()
    await db.close()
    return web.json_response({'status': 'success', 'msg': answer})
 async def get_jobs_dirs(self, request, given_username=None):
     root_jobs_dir = au.get_jobs_dir()
     if self.servermode and self.server_ready:
         username = await cravat_multiuser.get_username(request)
     else:
         username = '******'
     if username == 'admin':
         jobs_dirs = []
         fns = os.listdir(root_jobs_dir)
         for fn in fns:
             path = os.path.join(root_jobs_dir, fn)
             if os.path.isdir(path):
                 jobs_dirs.append(path)
     else:
         if username is None:
             jobs_dirs = []
         else:
             jobs_dir = os.path.join(root_jobs_dir, username)
             if os.path.exists(jobs_dir) == False:
                 os.mkdir(jobs_dir)
             jobs_dirs = [jobs_dir]
     return jobs_dirs
Exemple #8
0
 async def set_username(self, email, newemail):
     conn = await self.get_db_conn()
     cursor = await conn.cursor()
     await cursor.execute(f'select * from users where email="{newemail}"')
     r = await cursor.fetchone()
     if r is not None:
         await cursor.close()
         await conn.close()
         return 'Duplicate username'
     cursor = await conn.cursor()
     q = f'update users set email="{newemail}" where email="{email}"'
     await cursor.execute(q)
     q = f'update jobs set username="******" where username="******"'
     await cursor.execute(q)
     await conn.commit()
     await cursor.close()
     await conn.close()
     root_jobs_dir = au.get_jobs_dir()
     old_job_dir = os.path.join(root_jobs_dir, email)
     new_job_dir = os.path.join(root_jobs_dir, newemail)
     os.rename(old_job_dir, new_job_dir)
     return ''
Exemple #9
0
 async def get_jobs_dir(self, request):
     root_jobs_dir = au.get_jobs_dir()
     '''
     session = await get_session(request)
     if servermode:
         if 'logged' in session:
             if session['logged'] != True:
                 session['username'] = ''
                 session['logged'] = False
                 return None
             else:
                 username = session['username']
         else:
             session['logged'] = False
             session['username'] = ''
             return None
     else:
         username = '******'
     session['username'] = username
     '''
     username = '******'
     jobs_dir = os.path.join(root_jobs_dir, username)
     return jobs_dir
def get_jobs_dir(request):
    jobs_dir = au.get_jobs_dir()
    return web.json_response(jobs_dir)
Exemple #11
0
 def __init__(self):
     self.root = os.path.dirname(__file__)
     self.input_fname = 'input'
     self.report_extensions = {'text': '.tsv', 'excel': '.xlsx'}
     self.db_extension = '.sqlite'
     self._jobs_dir = au.get_jobs_dir()
Exemple #12
0
def create_user_dir_if_not_exist(username):
    root_jobs_dir = au.get_jobs_dir()
    user_job_dir = os.path.join(root_jobs_dir, username)
    if os.path.exists(user_job_dir) == False:
        os.mkdir(user_job_dir)