From 579204edb43e0d44f064cc5243bf14939f3f0895 Mon Sep 17 00:00:00 2001 From: vnugent Date: Mon, 28 Aug 2023 22:00:43 -0400 Subject: Data extensions updates --- .../src/Tokens/ActiveToken.cs | 17 +++++++++- .../src/Tokens/IOAuth2TokenResult.cs | 21 ++++++++++++- .../src/Tokens/TokenStore.cs | 36 ++++++++-------------- 3 files changed, 49 insertions(+), 25 deletions(-) (limited to 'Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens') diff --git a/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/ActiveToken.cs b/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/ActiveToken.cs index 8e8fb5e..0cb7f6f 100644 --- a/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/ActiveToken.cs +++ b/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/ActiveToken.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Oauth @@ -28,13 +28,28 @@ using VNLib.Plugins.Extensions.Data; namespace VNLib.Plugins.Essentials.Oauth.Tokens { + /// + /// Represents a token record in the database + /// public class ActiveToken : DbModelBase { + /// public override string Id { get; set; } = string.Empty; + + /// public override DateTime Created { get; set; } + + /// public override DateTime LastModified { get; set; } + /// + /// A ID of the applicaiton this token was issued for + /// public string? ApplicationId { get; set; } + + /// + /// An optional OAuth2 refresh token, used for refreshing access tokens + /// public string? RefreshToken { get; set; } } } diff --git a/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/IOAuth2TokenResult.cs b/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/IOAuth2TokenResult.cs index 0a4cc31..bd9ffce 100644 --- a/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/IOAuth2TokenResult.cs +++ b/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/IOAuth2TokenResult.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Oauth @@ -29,10 +29,29 @@ namespace VNLib.Plugins.Essentials.Oauth.Tokens /// public interface IOAuth2TokenResult { + /// + /// An optional token that can be used to identify the user + /// string? IdentityToken { get; } + + /// + /// The access token, used for authenticating requests + /// string? AccessToken { get; } + + /// + /// An optional OAuth2 refresh token, used for refreshing access tokens + /// string? RefreshToken { get; } + + /// + /// The type of token, usually "Bearer" + /// string? TokenType { get; } + + /// + /// The number of seconds until the access token expires + /// int ExpiresSeconds { get; } } } \ No newline at end of file diff --git a/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/TokenStore.cs b/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/TokenStore.cs index f160a79..7b07f46 100644 --- a/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/TokenStore.cs +++ b/Libs/VNLib.Plugins.Essentials.Oauth/src/Tokens/TokenStore.cs @@ -92,20 +92,11 @@ namespace VNLib.Plugins.Essentials.Oauth.Tokens Created = now, LastModified = now, }; + //Add token to store - ctx.OAuthTokens.Add(newToken); - //commit changes - ERRNO result = await ctx.SaveChangesAsync(cancellation); - if (result) - { - //End transaction - await ctx.CommitTransactionAsync(cancellation); - } - else - { - await ctx.RollbackTransctionAsync(cancellation); - } - return result; + ctx.Add(newToken); + + return await ctx.SaveAndCloseAsync(true, cancellation); } /// @@ -128,11 +119,11 @@ namespace VNLib.Plugins.Essentials.Oauth.Tokens return; } //delete token - ctx.OAuthTokens.Remove(at); + ctx.Remove(at); //Save changes - await ctx.SaveChangesAsync(cancellation); - await ctx.CommitTransactionAsync(cancellation); + await ctx.SaveAndCloseAsync(true, cancellation); } + /// /// Removes all token entires that were created before the specified time /// @@ -150,12 +141,12 @@ namespace VNLib.Plugins.Essentials.Oauth.Tokens .ToArrayAsync(cancellation); //delete token - ctx.OAuthTokens.RemoveRange(at); + ctx.RemoveRange(at); //Save changes - int count = await ctx.SaveChangesAsync(cancellation); - await ctx.CommitTransactionAsync(cancellation); + await ctx.SaveAndCloseAsync(true, cancellation); return at; } + /// public async Task RevokeTokensAsync(IReadOnlyCollection tokens, CancellationToken cancellation = default) { @@ -170,9 +161,9 @@ namespace VNLib.Plugins.Essentials.Oauth.Tokens //delete token ctx.OAuthTokens.RemoveRange(at); //Save changes - await ctx.SaveChangesAsync(cancellation); - await ctx.CommitTransactionAsync(cancellation); + await ctx.SaveAndCloseAsync(true, cancellation); } + /// async Task ITokenManager.RevokeTokensForAppAsync(string appId, CancellationToken cancellation) { @@ -190,8 +181,7 @@ namespace VNLib.Plugins.Essentials.Oauth.Tokens t.Created = DateTime.MinValue; } //Save changes - await ctx.SaveChangesAsync(cancellation); - await ctx.CommitTransactionAsync(cancellation); + await ctx.SaveAndCloseAsync(true, cancellation); } } } -- cgit