Tá quase funcionando tudo, a ideia é boa e a execução é boa (raro isso aqui no TabNews, parabéns), porém tem um detalhe relevante:
O ponto de não precisar por e-mail eu achei perfeito, ninguém aguenta mais ter que ficar enfiando e-mail em tudo, porém em sistemas assim o login não pode ser pelo e-mail (ou pelo menos o e-mail precisa ser fictício) como você fez, porque o e-mail ser opcional no cadastro e ser a única via de login significa que o usuário não consegue mais fazer login
Eu tenho um sistema assim que por especificação o login se dava pelo CPF ou por e-mail, o que eu fiz foi fazer um prefixo interno de e-mail fictício @a.b, o motivo é simples, pelas regras de domínio, esse domínio não pode ser registrado então se o e-mail não valida, eu valido o CPF e aplico o sufixo @a.b e o usuário pode ter 2 e-mails de login, o @a.b e outro de livre escolha
Sei que é WIP, porém eu recomendo manter a possibilidade de conta sem e-mail mas se atentando a esse detalhe