def action_change_pass(): username = request.forms.username new_password = request.forms['new-password'] check_password = request.forms['check-password'] if not AAA.current_user_is_admin(): old_password = request.forms['old-password'] if not api.verify_password(AAA.create_user(), old_password): return show_alert("Operation failed", "Old password could not be verified", "/admin/change_pass.html?username=%s" % username) if new_password != check_password: return show_alert("Operation failed", "The new password did not check, retype it.", "/admin/change_pass.html?username=%s" % username) try: api.change_user_password(username, new_password) except api.Unauthorized: return show_alert( "Operation failed", "You do not have permission to perform this operation", "/admin/users.html") redirect('/admin/users.html')
def _nsd_init(entity, obj): # (0) project id if 'current_project' in AAA.session(): obj.setdefault('project_id', AAA.session()['current_project']) # (A) parameters obj.setdefault('parameters', {}) obj['parameters'].setdefault('sim_time_limit', 3600) obj['parameters'].setdefault('simtime_scale', -9) obj['parameters'].setdefault('random_seed', 0) # (B) environment obj.setdefault('environment', {}) obj['environment'].setdefault('type', 'castalia') # (C) network if 'current_plan' in AAA.session(): obj.setdefault('plan_id', AAA.session()['current_plan']) # (D) views obj.setdefault('views', _get_predefined_plots()['views']) logger.debug("NSD initialized to: ", obj) return obj
def delete_user(username): '''Delete a system user.''' roles = AAA.session_roles() if AAA.current_user() == username: roles.add(AAA.Owner) if not AAA.UserRecord.authorize(roles, AAA.Delete): raise Unauthorized(details="Not authorized to delete users") Manager.delete_user(username) logger.info("Deleted user: %s", username)
def login(username, password): # No password at this time success = username and verify_password(username, password) if success: AAA.set_current_user(username) logger.info('User %s logged in', username) else: logger.info("Login failure: username='******'", username) return success
def change_admin_status(username, is_admin): '''Change the admin status of a user.''' roles = AAA.session_roles() if AAA.current_user() == username: roles.add(AAA.Owner) if not AAA.UserRecord.authorize(roles, AAA.ChangeAdminStatus): raise Unauthorized( details="Not authorized to change the admin flag for this user") Manager.update_user(username, is_admin=is_admin) logger.info("Changed admin status for user '%s' to %s", username, is_admin)
def change_user_password(username, password): '''Change the password for a user.''' roles = AAA.session_roles() if AAA.current_user() == username: roles.add(AAA.Owner) if not AAA.UserRecord.authorize(roles, AAA.ChangeUserPassword): raise Unauthorized( details="Not authorized to change the password for this user") Manager.update_user(username, password=password) logger.info("Changed password for user: %s", username)
def session_info(): dpcm_user = AAA.current_dpcm_user() current_project = AAA.session_get('project_id', None) current_plan = AAA.session_get('plan_id', None) ret = {} if dpcm_user is not None: ret['dpcm_user'] = dpcm_user if current_project is not None: ret['project_id'] = current_project if current_plan is not None: ret['plan_id'] = current_plan return ret
def create_user(user): '''Create a new system user.''' roles = AAA.session_roles() if not AAA.UserRecord.authorize(roles, AAA.Create): raise Unauthorized(details="Not authorized to create users") Manager.create_user(user) logger.info("New system user: %s", user.username)
def index(fname): if fname.startswith("html/index"): # # We have angular which uses the URL fragment to denote internal # pages. # # try to collect user, plan and project info before the fragment dpcm_user = request.query.user project_id = request.query.project_id plan_id = request.query.plan_id # save into the sesssion what is to be saved if dpcm_user or project_id or plan_id: if dpcm_user: AAA.set_dpcm_user(dpcm_user) if project_id: AAA.session_set('project_id', project_id) if plan_id: AAA.session_set('plan_id', plan_id) logger.info("Main page loaded, current user=%s, project=%s, plan=%s", dpcm_user, project_id, plan_id) return static_file(fname, root=(nsdEdit_file_path() + '/dist'))
def logout(): AAA.clear_current_user()