def get(self): parser = reqparse.RequestParser() parser.add_argument('name', help='This field cannot be blank', required=True) data = parser.parse_args() current_user = UserModel.find_by_name(data['name']) if not current_user: return { 'message': 'User {} doesn\'t exist'.format(data['name']) }, 400 user_part = UserModel.to_json(current_user) user_part['roles'] = list() user_part['keys'] = list() user_part['groups'] = list() useruserroles = UserUserRolesModel.by_user_id(current_user.id) for uur in useruserroles: role = UserRolesModel.by_id(uur.user_role_id) user_part['roles'].append(UserRolesModel.to_json(role)) userkeys = UserKeysModel.by_user_id(current_user.id) for uk in userkeys: user_part['keys'].append(UserKeysModel.to_json(uk)) usergroups = UserUserGroupsModel.by_user_id(current_user.id) for ug in usergroups: group = UserGroupsModel.by_id(ug.user_group_id) if group: user_part['groups'].append(UserGroupsModel.to_json(group)) return user_part
def post(self): data = parser.parse_args() current_user = UserModel.find_by_name(data['name']) if not current_user: return { 'message': 'User {} doesn\'t exist'.format(data['name']) }, 400 if UserModel.verify_hash(data['password'], current_user.password): access_token = create_access_token( identity=data['name'], expires_delta=datetime.timedelta(hours=1)) refresh_token = create_refresh_token(identity=data['name']) return { 'message': 'Logged in as {}'.format(current_user.name), 'user': current_user.name, 'id': current_user.id, 'email': current_user.email, 'access_token': access_token, 'refresh_token': refresh_token }, 200, { 'jwt-token': access_token } else: return {'message': 'Wrong credentials'}, 401
def get(self, id): userkey = UserKeysModel.by_id(id) userkeys_part = UserKeysModel.to_json(userkey) user = UserModel.by_id(userkey.user_id) userkeys_part['user'] = UserModel.to_json(user) return userkeys_part
def get(self, name): userrole = UserRolesModel.by_name(name) userroles_part = UserRolesModel.to_json(userrole) useruserroles = UserUserRolesModel.by_user_role_id(userrole.id) userroles_part['users'] = [] for uur in useruserroles: user = UserModel.by_id(uur.user_id) userroles_part['users'].append(UserModel.to_json(user)) return userroles_part
def get(self, id): session = SessionsModel.by_id(id) sessions_part = SessionsModel.to_json(session) host = HostsModel.by_id(session.host_id) sessions_part['host'] = HostsModel.to_json(host) if host else None user = UserModel.by_id(session.user_id) sessions_part['user'] = UserModel.to_json(user) if user else None return sessions_part
def get(self): userkeys_json = [] userkeys = UserKeysModel.return_all() for userkey in userkeys: userkeys_part = UserKeysModel.to_json(userkey) user = UserModel.by_id(userkey.user_id) userkeys_part['user'] = UserModel.to_json(user) userkeys_json.append(userkeys_part) return userkeys_json
def get(self): userroles_json = [] userroles = UserRolesModel.return_all() for userrole in userroles: userroles_part = UserRolesModel.to_json(userrole) useruserroles = UserUserRolesModel.by_user_role_id(userrole.id) userroles_part['users'] = [] for uur in useruserroles: user = UserModel.by_id(uur.user_id) userroles_part['users'].append(UserModel.to_json(user)) userroles_json.append(userroles_part) return userroles_json
def get(self): sessions_json = [] sessions = SessionsModel.return_all() for session in sessions: sessions_part = SessionsModel.to_json(session) host = HostsModel.by_id(session.host_id) sessions_part['host'] = HostsModel.to_json(host) if host else None user = UserModel.by_id(session.user_id) sessions_part['user'] = UserModel.to_json(user) if user else None sessions_json.append(sessions_part) return sessions_json
def exists(user): if UserModel.find_by_name(user): print('User {} already exists'.format(user)) sys.exit(0) else: print("User don't exsist") sys.exit(1)
def register(user, password): userobj = UserModel.find_by_name(user) if not userobj: return 'User {} do not exists, create it via sshportal command line'.format( user) password = getpass('Please enter your password: '******'User {} updated'.format(user) except: return 'Something went wrong'
def get(self, name): usergroup = UserGroupsModel.by_name(name) usergroups_part = UserGroupsModel.to_json(usergroup) userusergroups = UserUserGroupsModel.by_user_group_id(usergroup.id) usergroups_part['users'] = [] for uug in userusergroups: user = UserModel.by_id(uug.user_id) usergroups_part['users'].append(UserModel.to_json(user)) usergroupacls = UserGroupAclModel.by_user_group_id(usergroup.id) usergroups_part['acls'] = [] for uga in usergroupacls: acl = AclsModel.by_id(uga.acl_id) usergroups_part['acls'].append(AclsModel.to_json(acl)) return usergroups_part
def post(self): if request.remote_addr != '127.0.0.1': return { 'message': "Your are'nt authorized to access this route" }, 401 data = parser.parse_args() if UserModel.find_by_name(data['name']): return {'message': 'User {} already exists'.format(data['name'])} new_user = UserModel(name=data['name'], password=UserModel.generate_hash( data['password'])) try: new_user.save_to_db() access_token = create_access_token( identity=data['name'], expires_delta=datetime.timedelta(hours=1)) refresh_token = create_refresh_token(identity=data['name']) return { 'message': 'User {} was created'.format(data['name']), 'access_token': access_token, 'refresh_token': refresh_token } except: return {'message': 'Something went wrong'}, 500
def get(self): users = UserModel.return_all() groups = UserGroupsModel.return_all() roles = UserRolesModel.return_all() keys = SshKeysModel.return_all() userkeys = UserKeysModel.return_all() hosts = HostsModel.return_all() hostgroups = HostGroupsModel.return_all() acls = AclsModel.return_all() sessions = SessionsModel.return_all() events = EventsModel.return_all() return { 'users': { 'count': len(users['users']) }, 'usergroups': { 'count': len(groups) }, 'userroles': { 'count': len(roles) }, 'keys': { 'count': len(keys) }, 'userkeys': { 'count': len(userkeys) }, 'hosts': { 'count': len(hosts), 'keys': len(list(set([x.ssh_key_id for x in hosts]))) }, 'hostgroups': { 'count': len(hostgroups) }, 'acls': { 'count': len(acls), 'allow': len([x for x in acls if x.action == 'allow']), }, 'sessions': { 'count': len(sessions), 'active': len([s for s in sessions if s.status != 'closed']), 'errors': len([s for s in sessions if s.err_msg != '']) }, 'events': { 'count': len(events), 'last_5': list(reversed([EventsModel.to_json(x) for x in events[-5:]])) } }
def get(self): return UserModel.return_all()