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); }