public override async Task <SignInQueryResult> ExecuteAsync(SignInQuery query)
        {
            Logger.ExecuteUserSignIn(query.Email);

            Tuple <Guid, string, string, IEnumerable <string> >?userByEmail = await Reader.SingleOrDefaultAsync <User, Tuple <Guid, string, string, IEnumerable <string> > >(
                u => u.Email == query.Email.ToLowerInvariant(),
                u => new Tuple <Guid, string, string, IEnumerable <string> >(u.Id, u.PasswordHash, u.Email, u.Roles));

            if (userByEmail == null)
            {
                Logger.UserSignInUserNotFound(query.Email);
                return(new SignInQueryResult(true, false, string.Empty));
            }

            bool passwordOk = _passwordStorage.Match(query.Password, userByEmail.Item2);

            if (!passwordOk)
            {
                Logger.UserSignInPasswordMismatch(query.Email);
                return(new SignInQueryResult(false, true, string.Empty));
            }

            string token  = _securityTokenFactory.Create(userByEmail.Item1, userByEmail.Item3, userByEmail.Item4);
            var    result = new SignInQueryResult(false, false, token);

            Logger.ExecuteUserSignInSuccessful(query.Email);
            return(result);
        }
        public async Task <SignInQueryResult> ExecuteAsync(SignInQuery query)
        {
            _logger.PartnerSignInInitiated(query.Id);

            (Guid id, string?name, string?hash) = await _reader.GetByIdOrThrowAsync <TokenIssuer, Tuple <Guid, string, string> >(
                query.Id, u => new Tuple <Guid, string, string>(u.Id, u.Name, u.SecretHash));

            if (id == Guid.Empty)
            {
                _logger.PartnerSignInPartnerNotFound(query.Id);
                return(new SignInQueryResult(true, false, string.Empty));
            }

            bool passwordOk = _passwordStorage.Match(query.Secret, hash);

            if (!passwordOk)
            {
                _logger.PartnerSignInPasswordMismatch(query.Id);
                return(new SignInQueryResult(false, true, string.Empty));
            }

            _logger.PartnerSignInSuccessful(query.Id, name);
            string token = _securityTokenFactory.Create(id, name, new[] { Roles.Partner });

            return(new SignInQueryResult(false, false, token));
        }
Exemple #3
0
        public async Task <string> ExecuteAsync(SignInValidQuery query)
        {
            User user = await _userReader.ByEmail(query.Email);

            if (user == null)
            {
                throw new ValidationException("User not found!");
            }

            bool isValid = _passwordStorage.Match(query.Password, user.PasswordHash);

            if (isValid)
            {
                return(_securityTokenFactory.Create(user));
            }

            throw new ValidationException("Password invalid!");
        }