Aprendendo a montar um site com SailsJS. Escolhi por criar o projeto RateSite. Esse programa terá dois usuários padrão. Um prestatador de serviço e um cliente. Exemplo de uso: Chaveiro/Cliente; Médico/Paciente; Possuidor de Carro/Cliente; Manicure/Cliente ....
- Implementar o Passport básico criado por Giancarlo Soverini - commit
- Criar uma tela que apenas logados podem entrar (com logout) - commit
- Criar uma mensagem de erro para o usuário, informando que ele não está logado - commit
- Noob: O nome dessa mensagem e flash() - req.flash()
- Info: O Chrome volta e meia manda dois POSTs iguais, com isso as vezes mando um flash duplicado. Não consegui impedir de passar na policy a segunda vez.
- Info: A maioria dos flash() que criarei no projeto serão no próprio cliente (quando eu usar o AngularJS), não preciso de um modelo muito complexo.
- Eu quero fazer um req.flash() e req.redirect('/') na policies/isAuthenticated.js
- Eu pensei em usar a proposta de um serviço 'FlashService' + política 'flash', mas acho que é mais complexo do que eu preciso, i.e. temos que adicionar a policy sempre antes de outras policies que precisam do flash, e principalmente, não podemos fazer um flash e redirect() como era o objectivo. 6. Acabei usando a ideia do req.flash() simples. Criando um partial EJS para cuidar disso - alterei o EJS da resposta para fazer para um for no req.flash() [mais robusto]
- Enviar o password encriptado para o servidor.
- Vou continua enviando plain text porque usamos HTTPS
- Explicação¹
- Javascript Cryptography
- Criar esqueci minha senha
- Etapas: (Usuário pede para resetar senha em /forgotPassword) -> (Servidor Envia email) -> (Usuário redefine a senha passando como parâmetro o token recebido no email) -> (Servidor atualiza a senha e invalida token). Segui o tutorial do Sahat Yalkabov
- Permitir mandar email. Utilizei o sails-hook-email (tive muito problema de timeout. Acho melhor usar a API do mailGun) - commit
- Para as configurações do Email (principalmente a senha) não ficarem no repositório, eu as coloquei no config.local que não é versionado por default.
- Eu estava com problema para enviar email pelo Gmail. Para resolver eu ativei o 2-steps verification e adicionei um 'App Password'. Também tentei usar o Mailgun
- Permitir resetar a senha e verifica se o token expirou Criar token com expiration - commit
- Criar login pelo Google commit
- Seguir os passos para criar seu app no Google API - Tutorial do Jenkins
- Implementar o Google Auth via passport-google-oauth seguindo o tutorial do sails-social-auth-example e o tutorial do Michael Herman
- Note que não precisamos fazer o google/callback porque o controller pega todos os google/* FIX
- Me ajudou ler essa pergunta do Stackoverflow
Fase 3 Colocar verificações no cliente
Acaba Fase de Login; Entra fase de Rate [negócio]
Fase 4 Buitify. Colocar favicon; usar foundation
- Para o front/CSS vamos usar Foundation
- Utilizei async para algumas tarefas ao invés de callback diretamente - tutorial. Pessoalmente eu prefiro Promise que já uso no angular.js, mas as libs são feitas com callback, por isso preferi utilizar o async a usar uma Promise com wrapper
Eu não consegui usar o config/local.js
, nem o config/env/*.js
dentro do config/passport.js
. Gostaria de usa-lo para salvar o appURL e o GoogleAPI.
Depois de algum estudo, verifiquei que o Sails não tem um suporte 100% para esse tipo de uso. Então decidi colocar o appURL (variável com a URL) como uma variável do ambiente APP_URL="http://falcon-medico-makah.c9users.io:8080/" sails lift
- preferia ter colocado em config/env/*
. commit
Já o GoogleAPI eu coloquei o workarround require(./local)
- Stackoverflow