Ejemplo n.º 1
0
        public async Task <Jwt> Login(LoginForm form)
        {
            var identity = await _identitiesRepository.GetByLoginAndPassword(form);

            if (identity == null)
            {
                return(null);
            }

            var hashed = _passwordHashCalculator.Calc(form.Password);

            if (identity.Password != hashed)
            {
                return(null);
            }

            var token = await _tokensRepository.IssueToken(identity.Id, DateTimeOffset.UtcNow.AddYears(1));

            if (token == null)
            {
                return(null);
            }

            var mappedToken = _mapper.Map <Jwts, Jwt>(token);

            var tokenBody = _jwtGenerator.Generate(mappedToken);
            await _tokensRepository.WriteBody(tokenBody.Id, tokenBody.Token);

            return(tokenBody);
        }