예제 #1
0
    def get(self, target, path):
        params = {}
        params.update(request.args)
        params.update(request.form)

        request_func = current_app.edm.get_passthrough
        passthrough_kwargs = {'params': params}

        response = _request_passthrough(target, path, request_func,
                                        passthrough_kwargs)

        # private means cannot be read other than admin
        ####@edm_configuration.login_required(oauth_scopes=['configuration:write'])  TODO somehow need to *allow* private if has auth!!!
        data = response.json()
        if (response.ok and 'response' in data
                and 'private' in data['response']
                and data['response']['private']):
            abort(code=HTTPStatus.FORBIDDEN, message='unavailable')

        if path == '__bundle_setup':
            data = response.json()
            data['response']['configuration'][
                'site.adminUserInitialized'] = User.admin_user_initialized()
            return data

        return response
예제 #2
0
def create_admin_user(email=None,
                      password=None,
                      repeat_password=None,
                      *args,
                      **kwargs):
    """
    This endpoint creates the initial admin user if none exists
    """
    message = None

    if User.admin_user_initialized():
        message = 'This function is disabled. Admin user exists.'
    else:
        log.info('Attempting to create first run admin user.')
        if email is None:
            email = request.form.get('email', None)
        if password is None:
            password = request.form.get('password', None)
        if repeat_password is None:
            repeat_password = request.form.get('repeat_password', None)

        if password == repeat_password:
            if None not in [email, password, repeat_password]:
                admin = User.ensure_user(
                    email,
                    password,
                    is_admin=True,
                    update=True,
                )
                if admin.is_admin:
                    message = 'Success creating startup admin user.'
                    # update configuration value for admin user created
                    return flask.redirect(_url_for('backend.home'))
                else:
                    message = 'We failed to create or update the user as an admin.'
            else:
                message = 'You must specify all fields.'
        else:
            message = 'The password fields do not match.'

    if message is not None:
        flash(message)
예제 #3
0
def admin_init(*args, **kwargs):
    """
    This endpoint is for initial admin user creation
    """
    return _render_template('home.admin_init.jinja2',
                            admin_exists=User.admin_user_initialized())
예제 #4
0
 def decorated_function(*args, **kwargs):
     if not current_user and not User.admin_user_initialized():
         return redirect(url_for('backend.admin_init'))
     return func(*args, **kwargs)