2014-01-16 4 views
1

я начал настраивать securesocial для собственного использования и столкнулись с одной проблемой во время настройки моих взглядов - я пытаюсь сделать постоянный шаблон панели инструментов в верхней части окна с текстом, как:Securesocial - получить пользовательские данные в пользовательской точки зрения

Welcome, 
@if(user != null) { 
    @user.firstName @user.lastName 
} else { 
    @Messages("Guest") 
} 

Эта панель генерируется в пользовательском главном виде:

@(title: String, user: securesocial.core.Identity = null)(content: Html) 

который вызывается из кода (index.scala.html пример):

@main("App test",user) 

У меня возникает проблема при попытке использовать индивидуальные представления - особенно passwordChange.scala.html. Это представление вызывается стандартным контроллером, предоставляемым securesocial (PasswordChange), который затем передает управление моему собственному плагину (MyViews, который имеет простую реализацию представлений рендеринга и расширяет TemplatesPlugin), не имеет никакой информации о контексте пользователя - так что даже если пользователь вошел в систему, во время смены пароля на панели инструментов отобразится «Добро пожаловать, гость», и в соответствующих меню будут отображаться, например, «Вход» и «Регистрация», несмотря на то, что пользователь вошел в систему во время смены пароля.

Может ли кто-нибудь предоставить мне решение для передачи информации о пользователе в мой пользовательский вид (желательно без перезаписи защищенных со стороны встроенных контроллеров)?

ответ

0

Раствор был очень прост и гладкий - вместо заполнения пользователя от HTTP-объект контекста (который был недоступен в этой части кода), я населенную пользователя из неявного запроса, а затем передаются переменная к собственному шаблону:

def getPasswordChangePage[A](implicit request: SecuredRequest[A], form: Form[ChangeInfo]): Html = { 
    val userName = request.user 
    views.html.secure.Registration.passwordChange(request, userName, form) 
    } 

Код, указанный выше, является частью кода MyViews.scala.

0

Похоже, user null. Вы заполняете его в своем коде?

Вам также нужно добавить запрос в свою модель user, чтобы ее найти. Например проверить это:

Create model class in Scala with Play 2 Framework

+0

Пользователь «null», и это проблема. Я не знаю, как передать пользовательский экземпляр в пользовательский вид, потому что он вызывается из контроллера, предоставленного securesocial. Если быть точным, это вызывает последовательность: PasswordChange.page (встроенный контроллер) -> MyViews.getPasswordChangePage (мое собственное создание шаблона обработки плагинов) -> passwordChange.scala.html (мой пользовательский шаблон) Что я пытаясь сделать, это получить «пользовательский» экземпляр и передать его в шаблон, хотя я не хочу (если это возможно) модифицировать встроенный класс контроллера. – SzybkiSasza

Смежные вопросы