Exemplo n.º 1
0
 public async Task DeleteRefreshToken(MemberRefreshToken refreshToken)
 {
     await Context
     .Delete <MemberRefreshToken>()
     .Where(x => x.Id).EqualTo(refreshToken.Id)
     .ExecuteAsync();
 }
Exemplo n.º 2
0
        public async Task <AuthenticationToken> RefreshToken(string refreshToken)
        {
            const string message = "Invalid token";

            MemberRefreshToken memberRefreshToken = await _memberRepository.GetRefreshToken(refreshToken);

            if (memberRefreshToken == null)
            {
                throw new OdkServiceException(message);
            }

            if (memberRefreshToken.Expires < DateTime.UtcNow)
            {
                await _memberRepository.DeleteRefreshToken(memberRefreshToken);

                throw new OdkServiceException(message);
            }

            Member member = await _memberRepository.GetMember(memberRefreshToken.MemberId);

            _authorizationService.AssertMemberIsCurrent(member);

            AuthenticationToken authenticationToken = await GenerateAccessToken(member, memberRefreshToken.Expires);

            await _memberRepository.DeleteRefreshToken(memberRefreshToken);

            return(authenticationToken);
        }
Exemplo n.º 3
0
        public async Task DeleteRefreshToken(string refreshToken)
        {
            MemberRefreshToken token = await _memberRepository.GetRefreshToken(refreshToken);

            if (token == null)
            {
                return;
            }

            await _memberRepository.DeleteRefreshToken(token);
        }
Exemplo n.º 4
0
        private async Task <string> GenerateRefreshToken(Guid memberId, DateTime?expires = null)
        {
            string refreshToken = RandomStringGenerator.Generate(64);

            if (expires == null)
            {
                expires = DateTime.UtcNow.AddDays(_settings.RefreshTokenLifetimeDays);
            }

            MemberRefreshToken token = new MemberRefreshToken(Guid.Empty, memberId, expires.Value, refreshToken);
            await _memberRepository.AddRefreshToken(token);

            return(refreshToken);
        }
Exemplo n.º 5
0
 public async Task AddRefreshToken(MemberRefreshToken token)
 {
     await Context
     .Insert(token)
     .ExecuteAsync();
 }