2017-02-14 4 views
0

Постановка задачиВ колбе-stormpath, как я маршрут пользователь на конкретную страницу после Loging в основе на пользователе группы Stormpath

Я работаю над приложением, которое использует колбу Stormpath для аутентификации. В моем приложении у меня две группы пользователей: normal users и admins. После входа пользователя в систему я хочу перенаправить их на определенную страницу на основе группы, к которой они принадлежат. Поэтому, если пользователь является обычным пользователем, они будут перенаправлены на /dashboard, и если они являются администратором, они будут перенаправлены на /admin_dashboard. На данный момент у меня есть STORMPATH_REDIRECT_URL = '/dashboard', поэтому каждый раз, когда они регистрируются, они перенаправляются на /dashboard независимо от того, к какой группе они принадлежат. Как перенаправить их на определенную страницу на основе их группы Stormpath?

ТОК фрагментов коды:

Примечание: Я использую Колбу-Stormpath вид входа в системе по умолчанию и приложение позволяет социальный логин через Google.

/app/__init__.py:

def create_app(config_name): 
    ... 
    # App config here 
    ... 
    stormpath_manager = StormpathManager() 
    stormpath_manager.init_app(app) 
    ... 
    return app 

/config.py:

class Config(Object): 
    ... 
    STORMPATH_REDIRECT_URL = '/dashboard' 
    ... 

/app/dashboard/views.py:

@dashboard_blueprint.route('/dashboard') 
@login_required 
@groups_required(['normal-users']) 
def dashboard(): 
    return render_template('dashboard/index.html', title="Dashboard") 

@dashboard_blueprint.route('/admin_dashboard') 
@login_required 
@groups_required(['admins']) 
def admin_dashboard(): 
    return render_template('dashboard/admin_index.html', title="Admin Dashboard") 
+0

Вы можете редактировать сообщение в включить текущий код? Представления Flask и то, как вы используете Stormpath. –

+0

@HaraldNordgren Пожалуйста, просмотрите отредактированный вопрос по запрошенной информации. Дайте мне знать, нужна ли какая-либо другая информация! –

ответ

0

РЕШЕНИЕ

flask_stormpath имеет класс User, как видно here, который принимает в качестве аргумента Account. Из stormpath-sdk-python видно, что Account имеет функцию has_group(self, resolvable), как показано here.

Таким образом, чтобы отобразить определенную страницу после того, как пользователь входит в систему, на основе группе принадлежит пользователь, я сделал следующие изменения в /app/dashboard/views.py при сохранении остальных неизменными:

from flask_stormpath import User 
from flask_stormpath import current_user 

@dashboard_blueprint.route('/dashboard') 
@login_required 
def dashboard(): 
    if User.has_group(current_user, 'normal-users'): 
    return render_template('dashboard/index.html', title="Dashboard") 
    elif User.has_group(current_user, 'admins'): 
    return render_template('dashboard/admin_index.html', title="Admin Dashboard") 
    else: 
     return render_template('dashboard/error.html', title="Error Page") 
Смежные вопросы