public async Task <Option <string> > Handle(AutenticarUsuarioCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                return(Option.None <string>());
            }

            var usuario = Usuario.CriarAutenticar(request.Email, request.Senha);

            if (!usuario.PodeSeAutenticar(usuarioReadOnlyRepository))
            {
                NotifyValidationErrors(usuario);
                return(Option.None <string>());
            }

            var usuarioViewModel = (await usuarioReadOnlyRepository.ObterParaAutenticacao(usuario.Email))
                                   .ValueOr(AutorizacaoUsuarioViewModel.Empty());

            var identityUser = identityManager.CreateUser(
                usuarioViewModel.NomeCompleto,
                usuarioViewModel.Email,
                Enumerable.Empty <string>())
                               .ValueOr(UserIdentity.Empty());

            return(identityManager.GenereteAccessToken(identityUser));
        }