2017-01-12 6 views
0

В настоящее время я использую следующий код для отображения входа и выхода из системы ссылки на панели меню в моем проекте Колба-администратора:Колба-Security Логин и выход из системы в строке меню

admin.add_link(MenuLink(name='Logout', category='', url="/logout")) 
admin.add_link(MenuLink(name='Login', category='', url="/login")) 

Однако, это будет отображаться как независимо о том, зарегистрирован ли текущий пользователь или нет. Можно ли заставить его отображать выход из системы при входе в систему и при входе в систему при выходе из системы?

ответ

1

Глядя на определения шаблонов меню в Колба-Admin (layout.html):

{% macro menu_links(links=None) %} 
    {% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %} 
    {% for item in links %} 
    {% if item.is_accessible() and item.is_visible() %} 
     <li> 
     <a href="{{ item.get_url() }}">{{ menu_icon(item) }}{{ item.name }}</a> 
     </li> 
    {% endif %} 
    {% endfor %} 
{% endmacro %} 

Обратите внимание на {% if item.is_accessible() and item.is_visible() %} линии. Создать унаследованные классы MenuLink и переопределить is_accessible() или is_visible().

Пример (ип-тестирование):

from flask_security import current_user 

class LoginMenuLink(MenuLink): 

    def is_accessible(self): 
     return not current_user.is_authenticated 


class LogoutMenuLink(MenuLink): 

    def is_accessible(self): 
     return current_user.is_authenticated    

admin.add_link(LogoutMenuLink(name='Logout', category='', url="/logout")) 
admin.add_link(LoginMenuLink(name='Login', category='', url="/login")) 
Смежные вопросы