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'})
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')
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)
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)})
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
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 ''
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)
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()
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)