def __init__(self, admin, board=None, dest=None, page=None, perpage=50, **kwargs): try: self.user = staff.check_password(admin) except staff.LoginError: Template.__init__(self, 'admin_login_template', login_task=dest) return if not dest: dest = HOME_PANEL self.admin = admin # TODO: Check if mod is banned. if not page: if dest in (HOME_PANEL, TRASH_PANEL): # Adjust for different pagination scheme. (Blame Wakaba.) page = 0 else: page = 1 if not str(perpage).isdigit(): perpage = 50 # The page attribute is not always a pure integer (thread pages). if str(page).isdigit(): page = int(page) self.page = page self.perpage = int(perpage) self.board = local.environ['waka.board'] if dest not in INTERFACE_MAPPING: dest = HOME_PANEL INTERFACE_MAPPING[dest](self, **kwargs) # Convert user reign list into a list of dictionaries, for # templating. reign = [] if self.user.account == staff.MODERATOR: reign = [{'board_entry': entry} for entry in self.user.reign] else: if self.board: reign = interboard.get_all_boards\ (check_board_name=self.board.name) else: reign = interboard.get_all_boards() # Set global form variables. Template.update_parameters(self, username=self.user.username, type=self.user.account, admin=admin, boards_select=reign, boards=reign, page=self.page, perpage=self.perpage)
def edit_staff_proxy(admin, mpass, username, newpassword=None, newclass=None, originalpassword='', reign=None, disable=None): user = staff.check_password(admin) if user.username == username: if misc.hide_critical_data(originalpassword, config.SECRET) \ != user.password: raise WakaError(strings.WRONGPASS) newclass = None reign = None elif user.account == staff.ADMIN: edited_user = staff.StaffMember.get(username) if edited_user.account == staff.ADMIN and mpass != config.ADMIN_PASS: raise WakaError('Incorrect management password.') else: raise WakaError(strings.INUSUFFICENTPRIVLEDGES) staff.edit_staff(username, clear_pass=newpassword, new_class=newclass, reign=reign, disable=disable) board = local.environ['waka.board'] forward_task = 'admin' if user.username == username else 'staff' return make_http_forward(misc.make_script_url(task=forward_task, board=board.name), config.ALTERNATE_REDIRECT)
def __init__(self, admin, board=None, dest=None, page=None, perpage=50, **kwargs): try: self.user = staff.check_password(admin) except staff.LoginError: Template.__init__(self, 'admin_login_template', login_task=dest) return if not dest: dest = HOME_PANEL self.admin = admin # TODO: Check if mod is banned. if not page: if dest in (HOME_PANEL, TRASH_PANEL): # Adjust for different pagination scheme. (Blame Wakaba.) page = 0 else: page = 1 if not str(perpage).isdigit(): perpage = 50 # The page attribute is not always a pure integer (thread pages). if str(page).isdigit(): page = int(page) self.page = page self.perpage = int(perpage) self.board = local.environ['waka.board'] if dest not in INTERFACE_MAPPING: dest = HOME_PANEL INTERFACE_MAPPING[dest](self, **kwargs) # Convert user reign list into a list of dictionaries, for # templating. reign = [] if self.user.account == staff.MODERATOR: reign = [{'board_entry' : entry} for entry in self.user.reign] else: if self.board: reign = interboard.get_all_boards\ (check_board_name=self.board.name) else: reign = interboard.get_all_boards() # Set global form variables. Template.update_parameters(self, username=self.user.username, type=self.user.account, admin=admin, boards_select=reign, boards=reign, page=self.page, perpage=self.perpage)
def do_logout(admin): # Clear login cache. try: user = staff.check_password(admin) user.logout_user() except staff.LoginError: pass clear_login_cookies() board = local.environ['waka.board'] return make_http_forward(misc.make_script_url(task='admin', board=board.name), config.ALTERNATE_REDIRECT)
def add_staff_proxy(admin, mpass, usertocreate, passtocreate, account, reign): user = staff.check_password(admin) if user.account != staff.ADMIN: raise WakaError(strings.INUSUFFICENTPRIVLEDGES) if account == staff.ADMIN and mpass != config.ADMIN_PASS: raise WakaError('Incorrect management password.') staff.add_staff(usertocreate, passtocreate, account, reign) board = local.environ['waka.board'] return make_http_forward(misc.make_script_url(task='staff', board=board.name), config.ALTERNATE_REDIRECT)
def do_logout(admin): # Clear login cache. try: user = staff.check_password(admin) user.logout_user() except staff.LoginError: pass clear_login_cookies() board = local.environ['waka.board'] return make_http_forward( misc.make_script_url(task='admin', board=board.name), config.ALTERNATE_REDIRECT)
def __init__(self, admin, action, **kwargs): self.action = action self.user = staff.check_password(admin) self.board = None self.kwargs = kwargs try: self.board = kwargs.pop('board') except KeyError: pass self.timestamp = time.time() self.date = misc.make_date(self.timestamp, style=config.DATE_STYLE) self.contents = [] self.action = action self.admin_id = None
def del_staff_proxy(admin, mpass, username): user = staff.check_password(admin) if user.account != staff.ADMIN: raise WakaError(strings.INUSUFFICENTPRIVLEDGES) user_to_kill = staff.StaffMember.get(username) if user_to_kill.account == staff.ADMIN and mpass != config.ADMIN_PASS: raise WakaError('Incorrect management password.') staff.del_staff(username) board = local.environ['waka.board'] return make_http_forward(misc.make_script_url(task='staff', board=board.name), config.ALTERNATE_REDIRECT)
def add_staff_proxy(admin, mpass, usertocreate, passtocreate, account, reign): user = staff.check_password(admin) if user.account != staff.ADMIN: raise WakaError(strings.INSUFFICIENTPRIVILEGES) if account == staff.ADMIN and mpass != config.ADMIN_PASS: raise WakaError('Incorrect management password.') staff.add_staff(usertocreate, passtocreate, account, reign) board = local.environ['waka.board'] return make_http_forward( misc.make_script_url(task='staff', board=board.name), config.ALTERNATE_REDIRECT)
def del_staff_proxy(admin, mpass, username): user = staff.check_password(admin) if user.account != staff.ADMIN: raise WakaError(strings.INSUFFICIENTPRIVILEGES) user_to_kill = staff.StaffMember.get(username) if user_to_kill.account == staff.ADMIN and mpass != config.ADMIN_PASS: raise WakaError('Incorrect management password.') staff.del_staff(username) board = local.environ['waka.board'] return make_http_forward( misc.make_script_url(task='staff', board=board.name), config.ALTERNATE_REDIRECT)
def do_login(username=None, password=None, save_login=False, admin=None, board=None, nexttask=HOME_PANEL): bad_pass = False staff_entry = None if not staff.staff_exists(): return make_first_time_setup_gateway() elif username and password: # Login via login form entry. try: staff_entry = staff.StaffMember.get(username) except staff.LoginError: # Bad username. bad_pass = True else: crypt_pass = misc.hide_critical_data(password, config.SECRET) if crypt_pass == staff_entry.password: remote = local.environ['REMOTE_ADDR'] staff_entry.login_host(remote) else: bad_pass = True elif admin: # Attempt automatic login. try: staff_entry = staff.check_password(admin) except staff.LoginError: clear_login_cookies() bad_pass = True else: # No login credentials given. bad_pass = True if bad_pass: return Template('admin_login_template') else: login = staff_entry.login_data login.make_cookie(save_login=save_login) return StaffInterface(login.cookie, dest=nexttask, board=board)
def edit_staff_proxy(admin, mpass, username, newpassword=None, newclass=None, originalpassword='', reign=None, disable=None): user = staff.check_password(admin) if user.username == username: if misc.hide_critical_data(originalpassword, config.SECRET) \ != user.password: raise WakaError(strings.WRONGPASS) newclass = None reign = None elif user.account == staff.ADMIN: edited_user = staff.StaffMember.get(username) if edited_user.account == staff.ADMIN and mpass != config.ADMIN_PASS: raise WakaError('Incorrect management password.') else: raise WakaError(strings.INSUFFICIENTPRIVILEGES) staff.edit_staff(username, clear_pass=newpassword, new_class=newclass, reign=reign, disable=disable) board = local.environ['waka.board'] forward_task = 'admin' if user.username == username else 'staff' return make_http_forward( misc.make_script_url(task=forward_task, board=board.name), config.ALTERNATE_REDIRECT)