mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 04:04:21 -04:00
Add external ids to user
This commit is contained in:
parent
461dad2724
commit
bc99408652
71
back/src/Kyoo.Abstractions/Models/Resources/JwtToken.cs
Normal file
71
back/src/Kyoo.Abstractions/Models/Resources/JwtToken.cs
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// Kyoo - A portable and vast media library solution.
|
||||||
|
// Copyright (c) Kyoo.
|
||||||
|
//
|
||||||
|
// See AUTHORS.md and LICENSE file in the project root for full license information.
|
||||||
|
//
|
||||||
|
// Kyoo is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// Kyoo is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Kyoo.Abstractions.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A container representing the response of a login or token refresh.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Initializes a new instance of the <see cref="JwtToken"/> class.
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="accessToken">The access token used to authorize requests.</param>
|
||||||
|
/// <param name="refreshToken">The refresh token to retrieve a new access token.</param>
|
||||||
|
/// <param name="expireIn">When the access token will expire.</param>
|
||||||
|
public class JwtToken(string accessToken, string refreshToken, TimeSpan expireIn)
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The type of this token (always a Bearer).
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("token_type")]
|
||||||
|
[JsonPropertyName("token_type")]
|
||||||
|
public string TokenType => "Bearer";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The access token used to authorize requests.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("access_token")]
|
||||||
|
[JsonPropertyName("access_token")]
|
||||||
|
public string AccessToken { get; set; } = accessToken;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The refresh token used to retrieve a new access/refresh token when the access token has expired.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("refresh_token")]
|
||||||
|
[JsonPropertyName("refresh_token")]
|
||||||
|
public string RefreshToken { get; set; } = refreshToken;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When the access token will expire. After this time, the refresh token should be used to retrieve.
|
||||||
|
/// a new token.cs
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("expire_in")]
|
||||||
|
[JsonPropertyName("expire_in")]
|
||||||
|
public TimeSpan ExpireIn { get; set; } = expireIn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The exact date at which the access token will expire.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("expire_at")]
|
||||||
|
[JsonPropertyName("expire_at")]
|
||||||
|
public DateTime ExpireAt { get; set; } = DateTime.UtcNow + expireIn;
|
||||||
|
}
|
@ -69,6 +69,11 @@ namespace Kyoo.Abstractions.Models
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public Dictionary<string, string> Settings { get; set; } = new();
|
public Dictionary<string, string> Settings { get; set; } = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// User accounts on other services.
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<string, ExternalToken> ExternalId { get; set; } = new();
|
||||||
|
|
||||||
public User() { }
|
public User() { }
|
||||||
|
|
||||||
[JsonConstructor]
|
[JsonConstructor]
|
||||||
@ -81,4 +86,23 @@ namespace Kyoo.Abstractions.Models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ExternalToken
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The id of this user on the external service.
|
||||||
|
/// </summary>
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A jwt token used to interact with the service.
|
||||||
|
/// Do not forget to refresh it when using it if necessary.
|
||||||
|
/// </summary>
|
||||||
|
public JwtToken Token { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The link to the user profile on this website. Null if it does not exist.
|
||||||
|
/// </summary>
|
||||||
|
public string? ProfileUrl { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
// Kyoo - A portable and vast media library solution.
|
|
||||||
// Copyright (c) Kyoo.
|
|
||||||
//
|
|
||||||
// See AUTHORS.md and LICENSE file in the project root for full license information.
|
|
||||||
//
|
|
||||||
// Kyoo is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// any later version.
|
|
||||||
//
|
|
||||||
// Kyoo is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace Kyoo.Authentication
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// A container representing the response of a login or token refresh.
|
|
||||||
/// </summary>
|
|
||||||
public class JwtToken
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The type of this token (always a Bearer).
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("token_type")]
|
|
||||||
[JsonPropertyName("token_type")]
|
|
||||||
public string TokenType => "Bearer";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The access token used to authorize requests.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("access_token")]
|
|
||||||
[JsonPropertyName("access_token")]
|
|
||||||
public string AccessToken { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The refresh token used to retrieve a new access/refresh token when the access token has expired.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("refresh_token")]
|
|
||||||
[JsonPropertyName("refresh_token")]
|
|
||||||
public string RefreshToken { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// When the access token will expire. After this time, the refresh token should be used to retrieve.
|
|
||||||
/// a new token.cs
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("expire_in")]
|
|
||||||
[JsonPropertyName("expire_in")]
|
|
||||||
public TimeSpan ExpireIn { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The exact date at which the access token will expire.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("expire_at")]
|
|
||||||
[JsonPropertyName("expire_at")]
|
|
||||||
public DateTime ExpireAt { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="JwtToken"/> class.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="accessToken">The access token used to authorize requests.</param>
|
|
||||||
/// <param name="refreshToken">The refresh token to retrieve a new access token.</param>
|
|
||||||
/// <param name="expireIn">When the access token will expire.</param>
|
|
||||||
public JwtToken(string accessToken, string refreshToken, TimeSpan expireIn)
|
|
||||||
{
|
|
||||||
AccessToken = accessToken;
|
|
||||||
RefreshToken = refreshToken;
|
|
||||||
ExpireIn = expireIn;
|
|
||||||
ExpireAt = DateTime.UtcNow + expireIn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user