Exemple #1
0
        public override async Task <AuthResult> ExecuteQueryAsync(RefreshSessionQuery query)
        {
            var now   = DateTime.UtcNow;
            var token = await hookrRepository
                        .ReadAsync((context, cancellationToken) => context
                                   .RefreshTokens
                                   .Include(x => x.User)
                                   .FirstOrDefaultAsync(x => !x.Used &&
                                                        x.ExpiresAt > now &&
                                                        x.Value
                                                        .Equals(query.RefreshToken),
                                                        cancellationToken), Token);

            if (token == null)
            {
                throw new RefreshTokenNotFoundException();
            }
            telegramUserIdProvider.Set(token.UserId);
            var result = await CreateAndSaveSessionAsync(token.User);

            token.Used = true;
            await hookrRepository.SaveChangesAsync();

            return(result);
        }
 private async Task UpdateTelegramUserAsync(TelegramUser user,
                                            TelegramUserDto dto)
 {
     user.Username      = dto.Username;
     user.FirstName     = dto.FirstName;
     user.PhotoUrl      = dto.PhotoUrl;
     user.LastUpdatedAt = DateTime.UtcNow;
     await hookrRepository.SaveChangesAsync();
 }
        public override async Task <Guid> ExecuteQueryAsync(GetRefreshTokenQuery query)
        {
            var session = userContextAccessor.Context;
            var token   = RefreshTokenFactory()
                          .SideEffect(x => x.UserId = session.Id);

            hookrRepository.Context.RefreshTokens
            .Add(token);
            await hookrRepository.SaveChangesAsync();

            return(token.Value);
        }