def invite_post(): email = post_get('email', '') name = post_get('name', '') desc = post_get('desc', '') if manager.save_invite(email, name, desc): flash_message('Thank you for your interest! We will send you an invite to try webrecorder.io soon!', 'success') redirect('/') else: flash_message('Oops, something went wrong, please try again') redirect(REGISTER_PATH)
def expire(): user = manager.get_curr_user() # if actually logged in (in a different tab), just redirect home if user: flash_message('Anonymous collection expired, browse your existing collections', 'info') redirect(path_parser.get_user_home(user)) else: flash_message('Sorry, the anonymous collection has expired due to inactivity') redirect('/')
def resetpass(resetcode): try: username = request.query['username'] result = {'username': username, 'resetcode': resetcode} except Exception as e: print(e) flash_message('Invalid password reset attempt. Please try again') redirect(FORGOT_PATH) return result
def invite_post(): email = post_get('email', '') name = post_get('name', '') desc = post_get('desc', '') if manager.save_invite(email, name, desc): flash_message( 'Thank you for your interest! We will send you an invite to try webrecorder.io soon!', 'success') redirect('/') else: flash_message('Oops, something went wrong, please try again') redirect(REGISTER_PATH)
def register(): if not invites_enabled: return {'email': '', 'skip_invite': True} invitecode = request.query.get('invite', '') email = '' try: email = manager.is_valid_invite(invitecode) except ValidationException as ve: flash_message(str(ve)) return {'email': email, 'invite': invitecode}
def delete_account(): cork.require(role='archivist', fail_redirect=LOGIN_PATH) user = request.query.get('user', '') if manager.delete_user(user): flash_message('The user {0} has been permanently deleted!'.format(user), 'success') redir_to = '/' request.environ['webrec.delete_all_cookies'] = 'all' cork.logout(success_redirect=redir_to, fail_redirect=redir_to) else: flash_message('There was an error deleting {0}'.format(coll)) redirect(path_parser.get_user_home(user))
def delete_account(): cork.require(role='archivist', fail_redirect=LOGIN_PATH) user = request.query.get('user', '') if manager.delete_user(user): flash_message( 'The user {0} has been permanently deleted!'.format(user), 'success') redir_to = '/' request.environ['webrec.delete_all_cookies'] = 'all' cork.logout(success_redirect=redir_to, fail_redirect=redir_to) else: flash_message('There was an error deleting {0}'.format(coll)) redirect(path_parser.get_user_home(user))
def register(): if not invites_enabled: return {'email': '', 'skip_invite': True} invitecode = request.query.get('invite', '') email = '' try: email = manager.is_valid_invite(invitecode) except ValidationException as ve: flash_message(str(ve)) return { 'email': email, 'invite': invitecode}
def update_password(): cork.require(role='archivist', fail_redirect=LOGIN_PATH) curr_password = post_get('curr_password') password = post_get('password') confirm_password = post_get('confirmpassword') try: manager.update_password(curr_password, password, confirm_password) flash_message('Password Updated', 'success') except ValidationException as ve: flash_message(str(ve)) user = manager.get_curr_user() redirect(path_parser.get_user_home(user) + SETTINGS)
def expire(): user = manager.get_curr_user() # if actually logged in (in a different tab), just redirect home if user: flash_message( 'Anonymous collection expired, browse your existing collections', 'info') redirect(path_parser.get_user_home(user)) else: flash_message( 'Sorry, the anonymous collection has expired due to inactivity' ) redirect('/')
def create_coll_static(): try: cork.require(role='archivist') except AAAException: msg = "You must login to create a new collection" flash_message(msg) redirect('/') try: manager.has_more_colls() except ValidationException as ve: flash_message(str(ve)) user = cork.current_user.username redirect(path_parser.get_user_home(user)) return {}
def login_post(): """Authenticate users""" username = post_get('username') password = post_get('password') if cork.login(username, password): redir_to = get_redir_back((LOGIN_PATH, '/'), path_parser.get_user_home(username)) #host = request.headers.get('Host', 'localhost') #request.environ['beaker.session'].domain = '.' + host.split(':')[0] #request.environ['beaker.session'].path = '/' else: flash_message('Invalid Login. Please Try Again') redir_to = LOGIN_PATH request.environ['webrec.delete_all_cookies'] = 'non_sesh' redirect(redir_to)
def register_post(): email = post_get('email') username = post_get('username') password = post_get('password') confirm_password = post_get('confirmpassword') invitecode = post_get('invite') redir_to = REGISTER_PATH if invites_enabled: try: val_email = manager.is_valid_invite(invitecode) if val_email != email: raise ValidationException( 'Sorry, this invite can only be used with email: {0}'. format(val_email)) except ValidationException as ve: flash_message(str(ve)) redirect(redir_to) return redir_to += '?invite=' + invitecode try: manager.validate_user(username, email) manager.validate_password(password, confirm_password) #TODO: set default host? host = get_host() cork.register(username, password, email, role='archivist', max_level=50, subject='webrecorder.io Account Creation', email_template='templates/emailconfirm.html', host=host) flash_message( 'A confirmation e-mail has been sent to <b>{0}</b>. \ Please check your e-mail to complete the registration!'.format(username), 'success') redir_to = '/' if invites_enabled: manager.delete_invite(email) except ValidationException as ve: flash_message(str(ve)) except Exception as ex: flash_message('Registration failed: ' + str(ex)) redirect(redir_to)
def create_coll(): cork.require(role='archivist', fail_redirect=LOGIN_PATH) coll_name = post_get('collection') title = post_get('title', coll_name) access = post_get('public', 'private') user = manager.get_curr_user() try: manager.add_collection(user, coll_name, title, access) flash_message('Created collection <b>{0}</b>!'.format(coll_name), 'success') redir_to = path_parser.get_coll_path(user, coll_name) except ValidationException as ve: flash_message(str(ve)) redir_to = CREATE_PATH redirect(redir_to)
def forgot_submit(): email = post_get('email', None) username = post_get('username', None) host = get_host() try: cork.send_password_reset_email(username=username, email_addr=email, subject='webrecorder.io password reset confirmation', email_template='templates/emailreset.html', host=host) flash_message('A password reset e-mail has been sent to your e-mail!', 'success') redir_to = '/' except Exception as e: flash_message(str(e)) redir_to = FORGOT_PATH redirect(redir_to)
def anon_coll_page(): user = manager.get_curr_user() # Anon coll page only available when not logged in if user: flash_message('Please select a collection to view', 'info') redirect('/' + path_parser.get_user_home(user)) user = manager.get_anon_user() collinfo = manager.get_user_info(user) return { 'user': '', 'coll': '@anon', 'coll_id': '@anon', 'path': 'replay', 'is_public': False, 'title': ANON_TITLE, 'desc': ANON_DESC, 'coll_size': collinfo.get('user_total_size'), 'max_size': collinfo.get('user_max_size') }
def do_reset(): username = post_get('username') resetcode = post_get('resetcode') password = post_get('password') confirm_password = post_get('confirmpassword') try: manager.validate_password(password, confirm_password) cork.reset_password(resetcode, password) flash_message('Your password has been successfully reset! \ You can now <b>login</b> with your new password!', 'success') redir_to = LOGIN_PATH except ValidationException as ve: flash_message(str(ve)) redir_to = RESET_PATH_FILL.format(resetcode, username) except Exception as e: flash_message('Invalid password reset attempt. Please try again') redir_to = FORGOT_PATH redirect(redir_to)
def do_reset(): username = post_get('username') resetcode = post_get('resetcode') password = post_get('password') confirm_password = post_get('confirmpassword') try: manager.validate_password(password, confirm_password) cork.reset_password(resetcode, password) flash_message( 'Your password has been successfully reset! \ You can now <b>login</b> with your new password!', 'success') redir_to = LOGIN_PATH except ValidationException as ve: flash_message(str(ve)) redir_to = RESET_PATH_FILL.format(resetcode, username) except Exception as e: flash_message('Invalid password reset attempt. Please try again') redir_to = FORGOT_PATH redirect(redir_to)
def delete_coll(): coll = request.query.get('coll', '') if coll == '@anon': user = manager.get_anon_user() if manager.delete_anon_user(user): request.environ['webrec.delete_all_cookies'] = 'all' #flash_message('Anonymous collection has been deleted!', 'success') redirect('/') else: flash_message('There was an error deleting this collection') redirect('/replay#settings') else: cork.require(role='archivist', fail_redirect=LOGIN_PATH) user, coll = path_parser.get_user_coll(coll) if manager.delete_collection(user, coll): flash_message('Collection {0} has been deleted!'.format(coll), 'success') redirect(path_parser.get_user_home(user)) else: flash_message('There was an error deleting {0}'.format(coll)) redirect('/' + path_parser.get_coll_path(user, coll) + '#settings')
def register_post(): email = post_get('email') username = post_get('username') password = post_get('password') confirm_password = post_get('confirmpassword') invitecode = post_get('invite') redir_to = REGISTER_PATH if invites_enabled: try: val_email = manager.is_valid_invite(invitecode) if val_email != email: raise ValidationException('Sorry, this invite can only be used with email: {0}'.format(val_email)) except ValidationException as ve: flash_message(str(ve)) redirect(redir_to) return redir_to += '?invite=' + invitecode try: manager.validate_user(username, email) manager.validate_password(password, confirm_password) #TODO: set default host? host = get_host() cork.register(username, password, email, role='archivist', max_level=50, subject='webrecorder.io Account Creation', email_template='templates/emailconfirm.html', host=host) flash_message('A confirmation e-mail has been sent to <b>{0}</b>. \ Please check your e-mail to complete the registration!'.format(username), 'success') redir_to = '/' if invites_enabled: manager.delete_invite(email) except ValidationException as ve: flash_message(str(ve)) except Exception as ex: flash_message('Registration failed: ' + str(ex)) redirect(redir_to)
def anon_coll_page(): user = manager.get_curr_user() # Anon coll page only available when not logged in if user: flash_message('Please select a collection to view', 'info') redirect('/' + path_parser.get_user_home(user)) user = manager.get_anon_user() collinfo = manager.get_user_info(user) return {'user': '', 'coll': '@anon', 'coll_id': '@anon', 'path': 'replay', 'is_public': False, 'title': ANON_TITLE, 'desc': ANON_DESC, 'coll_size': collinfo.get('user_total_size'), 'max_size': collinfo.get('user_max_size') }
def forgot_submit(): email = post_get('email', None) username = post_get('username', None) host = get_host() try: cork.send_password_reset_email( username=username, email_addr=email, subject='webrecorder.io password reset confirmation', email_template='templates/emailreset.html', host=host) flash_message( 'A password reset e-mail has been sent to your e-mail!', 'success') redir_to = '/' except Exception as e: flash_message(str(e)) redir_to = FORGOT_PATH redirect(redir_to)
def val_reg(reg): try: username = manager.init_user(reg) flash_message('<b>{0}</b>, welcome to your new archive home page! \ Click the <b>Create New Collection</b> button to create your first collection. Happy Archiving!'.format(username), 'success') redir_to = '/' + username except AAAException: flash_message('The user <b>{0}</b> is already registered. \ If this is you, please login or click forgot password, \ or register a new account.'.format(username)) redir_to = LOGIN_PATH except Exception as e: flash_message('Sorry, this is not a valid registration code. Please try again.') redir_to = REGISTER_PATH redirect(redir_to)
def val_reg(reg): try: username = manager.init_user(reg) flash_message( '<b>{0}</b>, welcome to your new archive home page! \ Click the <b>Create New Collection</b> button to create your first collection. Happy Archiving!' .format(username), 'success') redir_to = '/' + username except AAAException: flash_message('The user <b>{0}</b> is already registered. \ If this is you, please login or click forgot password, \ or register a new account.'.format(username)) redir_to = LOGIN_PATH except Exception as e: flash_message( 'Sorry, this is not a valid registration code. Please try again.' ) redir_to = REGISTER_PATH redirect(redir_to)