Merge pull request #423 from pschord/username-validation

Validate usernames on account creation like PSFPortal
This commit is contained in:
Mazo 2020-05-12 10:49:56 +01:00 committed by GitHub
commit 2400afb24b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -35,6 +35,8 @@ class LoginSessionActor extends Actor with MDCContextAware {
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
private case class UpdateServerList() private case class UpdateServerList()
val usernameRegex = """[A-Za-z0-9]{3,}""".r
var sessionId : Long = 0 var sessionId : Long = 0
var leftRef : ActorRef = ActorRef.noSender var leftRef : ActorRef = ActorRef.noSender
var rightRef : ActorRef = ActorRef.noSender var rightRef : ActorRef = ActorRef.noSender
@ -213,6 +215,9 @@ class LoginSessionActor extends Actor with MDCContextAware {
def createNewAccount : Receive = { def createNewAccount : Receive = {
case CreateNewAccount(connection, username, password, newToken) => case CreateNewAccount(connection, username, password, newToken) =>
log.info(s"Account $username does not exist, creating new account...") log.info(s"Account $username does not exist, creating new account...")
username match {
case usernameRegex(_*) => ;
val bcryptPassword : String = password.bcrypt(numBcryptPasses) val bcryptPassword : String = password.bcrypt(numBcryptPasses)
connection.get.inTransaction { connection.get.inTransaction {
@ -253,6 +258,12 @@ class LoginSessionActor extends Actor with MDCContextAware {
case _ => case _ =>
failWithError(s"Something to do?") failWithError(s"Something to do?")
} }
case _ =>
log.warn(s"Account '$username' does not match regex")
context.become(finishAccountLogin)
self ! FinishAccountLogin(connection, username, newToken, false)
}
case default => case default =>
failWithError(s"Invalid message '$default' received in createNewAccount") failWithError(s"Invalid message '$default' received in createNewAccount")
} }