Это действительно странно. Я не знаю, что пошло не так, и попытался исправить это не менее часа. Я написал специальную валидатор для формы:Play Scala Несоответствие типа формы между опцией и модулем
def validate (email: String, password: String): Option[UserData] = DB.withSession { implicit rs: scala.slick.session.Session =>
val result = Users.get(email)
if (result.isEmpty) None
else if(password.bcrypt hash= result(0).password) {
Some(UserData(email, password))
}
}
Полное раскрытие, я играть-скользким. Также таинственный password.bcrypt hash= ...
- это функция шифрования, которую я заимствовал Hasher: https://github.com/Nycto/Hasher. Я определил UserData
в том же контроллере:
case class UserData(email: String, password: String)
Этот код кажется все хорошо со мной, но компилятор с игровой консоли сказал:
/Users/.../Desktop/blog/play-slick-blog/app/controllers/Login.scala:25:
type mismatch; found : Unit required:
Option[controllers.Login.UserData]
else if(password.bcrypt hash= result(0).password) {
^one error found
Это не должно быть право ошибки ??? Что происходит?
Еще один вопрос, который мне нужно задать: в моей странице «Вход в систему» первая строка выглядит так: @(form: Form[Login.UserData])
. Затем программа просит меня передать значение формы каждый раз, когда я вызываю render()
. Проблема в том, что у меня нет значения формы, если пользователь впервые регистрируется. Что мне следует передать тогда?
Благодарим за помощь!
Черт возьми, это точно моя проблема! –