{"action":"opened","issue":{"url":"https://api.github.com/repos/jeanvillete/clockinclockout-jaxws/issues/20","repository_url":"https://api.github.com/repos/jeanvillete/clockinclockout-jaxws","labels_url":"https://api.github.com/repos/jeanvillete/clockinclockout-jaxws/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/jeanvillete/clockinclockout-jaxws/issues/20/comments","events_url":"https://api.github.com/repos/jeanvillete/clockinclockout-jaxws/issues/20/events","html_url":"https://github.com/jeanvillete/clockinclockout-jaxws/issues/20","id":140513992,"number":20,"title":"Implement WS [case:Login]","user":{"login":"jeanvillete","id":6913599,"avatar_url":"https://avatars.githubusercontent.com/u/6913599?v=3","gravatar_id":"","url":"https://api.github.com/users/jeanvillete","html_url":"https://github.com/jeanvillete","followers_url":"https://api.github.com/users/jeanvillete/followers","following_url":"https://api.github.com/users/jeanvillete/following{/other_user}","gists_url":"https://api.github.com/users/jeanvillete/gists{/gist_id}","starred_url":"https://api.github.com/users/jeanvillete/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jeanvillete/subscriptions","organizations_url":"https://api.github.com/users/jeanvillete/orgs","repos_url":"https://api.github.com/users/jeanvillete/repos","events_url":"https://api.github.com/users/jeanvillete/events{/privacy}","received_events_url":"https://api.github.com/users/jeanvillete/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-03-13T18:39:26Z","updated_at":"2016-03-13T18:39:26Z","closed_at":null,"body":"case:Login (NÃO_NECESSÁRIO_ESTAR_LOGADO)\r\n#O usuário deve ter a possibilidade de criar uma sessão com a aplicação, para que a maioria das funcionalidades que dependam de usuário estar logado possam ser efetuadas.\r\nNota: Vale resaltar que o password fornecido pelo usuário é criptografado, ou melhor, é tirado um hash do mesmo e sempre que o usuário efetuar login, o password fornecido é comparado ao hash tirado, o que coloca a aplicação em uma situação que mesmo que a mesma seja hackeada ou invadida, ou pior, a base de dados seja violada, o password do usuário nunca será exposto.\r\n[ LoginService.doLogin(User) ] O serviço deve validar se o endereço de email fornecido no objeto User existe na base de dados, se este endereço de email é primário e já confirmado (CONFIRMATION_DATE IS NOT NULL), e por ultimo verificar se o password contido no parâmetro bate com o password CRIPTOGRAFADO e armazenado em base de dados. Uma vez validado, o serviço deve retornar um código que será utilizado pelo usuário para fazer qualquer requisição que necessite saber qual é o usuário em sessão.\r\n"}}