from flask import g, request, abort from flask_restplus import Resource, fields import bcrypt from pyinfraboxutils import get_logger from pyinfraboxutils.ibflask import OK from pyinfraboxutils.ibrestplus import api from pyinfraboxutils.token import encode_user_token from dashboard_api.namespaces import account as ns login_model = api.model( 'Login', { 'email': fields.String(required=True), 'password': fields.String(required=True), }) logger = get_logger('login') @ns.route('/login') class Login(Resource): @api.expect(login_model) def post(self): b = request.get_json() email = b['email'] password = b['password']
import re from flask import request, g, abort from flask_restx import Resource, fields from pyinfrabox.utils import validate_uuid from pyinfraboxutils.ibflask import OK from pyinfraboxutils.ibrestplus import api, response_model ns = api.namespace('SSHKeys', path='/api/v1/projects/<project_id>/sshkeys', description='SSH Key related operations') sshkey_model = api.model( 'CronJob', { 'name': fields.String(required=True), 'id': fields.String(required=True), 'secret': fields.String(required=True), }) add_sshkey_model = api.model( 'AddCronJob', { 'name': fields.String(required=True, max_length=255), 'secret': fields.String(required=True, max_length=255), }) @ns.route('/') @api.doc(responses={403: 'Not Authorized'}) class SSHKeys(Resource): name_pattern = re.compile('^[a-zA-Z0-9_]+$')
from flask import request, g, abort from flask_restplus import Resource, fields import re from pyinfraboxutils.ibflask import auth_required, OK from pyinfraboxutils.ibrestplus import api from api.namespaces import project as ns secret_model = api.model('Secret', { 'name': fields.String(required=True), 'id': fields.String(required=True), }) add_secret_model = api.model('AddSecret', { 'name': fields.String(required=True), 'value': fields.String(required=True), }) @ns.route('/<project_id>/secrets/') class Secrets(Resource): name_pattern = re.compile('^[a-zA-Z0-9_]+$') @auth_required(['user']) @api.marshal_list_with(secret_model) def get(self, project_id): p = g.db.execute_many_dict( ''' SELECT name, id FROM secret WHERE project_id = %s
from flask import g, abort from flask_restplus import Resource, fields from pyinfraboxutils.ibflask import OK from pyinfraboxutils.ibrestplus import api ns = api.namespace('User', path='/api/v1/user', description='User related operations') user_model = api.model( 'User', { 'github_id': fields.Integer, 'username': fields.String, 'avatar_url': fields.String, 'name': fields.String, 'email': fields.String, 'id': fields.String, }) @ns.route('') @api.doc(responses={403: 'Not Authorized'}) @api.doc(responses={404: 'User not found'}) class User(Resource): @api.marshal_with(user_model) def get(self): ''' Returns information about the current user '''
from flask import g, abort, request from flask_restx import Resource, fields from pyinfraboxutils.ibflask import OK from pyinfraboxutils.ibrestplus import api user_role_setting_model = api.model( 'UserRoleUpdate', { 'id': fields.String(required=True), 'role': fields.String(required=True, enum=['user', 'devops', 'admin']), }) @api.route('/api/v1/admin/users', doc=False) class Users(Resource): def get(self): users = g.db.execute_many_dict(''' SELECT id, name, username, email, avatar_url, role FROM "user" ORDER BY name ''') return users @api.expect(user_role_setting_model, validate=True) def post(self): if g.token['user']['role'] != 'admin': abort(403, "updating user role is only allowed for admin user") body = request.get_json() if body['id'] == '00000000-0000-0000-0000-000000000000': abort(403, "can't change role for Admin")