Created
July 19, 2018 11:13
-
-
Save mdr/5d9403714d8e70678c24e09f05277f36 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package gems.user.service | |
import com.google.inject.ImplementedBy | |
import com.google.inject.Inject | |
import gems.user.dao.UserDao | |
import gems.user.dao.entity.User | |
import gems.user.service.dto.Credentials | |
import gems.user.service.session.Session | |
import gems.user.service.session.SessionManager | |
@ImplementedBy(DefaultAuthenticationService::class) | |
interface AuthenticationService { | |
fun login(credentials: Credentials, sessionManager: SessionManager): Boolean | |
fun logout(sessionManager: SessionManager) | |
} | |
class DefaultAuthenticationService @Inject constructor(private val userDao: UserDao) : | |
AuthenticationService { | |
override fun login(credentials: Credentials, sessionManager: SessionManager): Boolean { | |
val user = userDao.findByEmail(credentials.email) | |
if (user == null) { | |
return false | |
} | |
if (authenticate(user, credentials)) { | |
sessionManager.beginSession(Session(user.id)) | |
return true | |
} else { | |
return false | |
} | |
} | |
private fun authenticate(user: User, credentials: Credentials) = doesPasswordMatchHash(credentials.password, user.passwordHash) | |
override fun logout(sessionManager: SessionManager) = sessionManager.endSession() | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment