Exemple #1
0
        public Project CreateProject(User creator, string title, string content)
        {
            var project = new Project
            {
                Title   = title,
                Content = content,
                UserId  = creator.UserId,
            };

            var projectEntity = _dbContext.Project.Add(project).Entity;

            _dbContext.SaveChanges();

            projectEntity.User = creator;

            return(projectEntity);
        }
        public string EncodeRefreshToken(string username, DateTime expiryDate)
        {
            var user           = Read(username);
            var previousTokens = _dbContext.RefreshToken
                                 .Where(token => token.UserId == user.UserId && !token.IsRevoked)
                                 .ToList();

            foreach (var token in previousTokens)
            {
                token.IsRevoked = true;
            }
            var refreshToken = new RefreshToken
            {
                UserId = user.UserId,
                RefreshTokenExpiryDate = expiryDate,
                InitialVector          = PasswordHelper.GenerateInitialVector(),
                EncryptionKey          = PasswordHelper.GenerateAesKey(),
            };
            var refreshTokenEntity = _dbContext.RefreshToken.Add(refreshToken).Entity;

            _dbContext.RefreshToken.UpdateRange(previousTokens);
            _dbContext.SaveChanges();

            var refreshTokenClaims = new DecodedRefreshTokenClaims
            {
                Username   = username,
                ExpiryDate = expiryDate,
                Secret     = _dataProtector.Protect(BitConverter.GetBytes(refreshToken.RefreshTokenId)),
            };
            var encodedToken = String.Empty;

            using (var serializerStream = new MemoryStream())
            {
                Console.WriteLine($"{nameof(EncodeRefreshToken)} refreshTokenClaims: [{refreshTokenClaims.ToString()}]");
                _binaryFormatter.Serialize(serializerStream, refreshTokenClaims);
                encodedToken = Convert.ToBase64String(serializerStream.ToArray());
            }

            return(encodedToken);
        }