예제 #1
0
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']
예제 #2
0
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_]+$')
예제 #3
0
파일: secrets.py 프로젝트: yagrxu/infrabox
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
예제 #4
0
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
        '''
예제 #5
0
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")