Compare commits
5
Commits
de36e7bfd1
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07e243964f | ||
|
|
0f1d3dadb0 | ||
|
|
295bd12877 | ||
|
|
4789d6b280 | ||
|
|
80978abefc |
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using xModels.Base;
|
||||
|
||||
namespace xIdentityModels.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// an Specified Api Key ...
|
||||
/// </summary>
|
||||
public class XApiKeyDto : XBaseGuidIDEntityDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Related Application Id ...
|
||||
/// </summary>
|
||||
public int ApplicationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Hash ...
|
||||
/// SHA256 of ApiKey ...
|
||||
/// </summary>
|
||||
public string KeyHash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// a Prefix ...
|
||||
/// </summary>
|
||||
public string KeyPrefix { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Expiration Type ...
|
||||
/// </summary>
|
||||
public DateTime ExpiresAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Cration Time ...
|
||||
/// </summary>
|
||||
public DateTime CreatedOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Last Usage Date ...
|
||||
/// </summary>
|
||||
public DateTime? LastUsedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Revoked Time ...
|
||||
/// </summary>
|
||||
public DateTime? RevokedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Revoker User Id ...
|
||||
/// </summary>
|
||||
public string RevokedBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// a Json Array String ...
|
||||
/// XApiKeyScope ...
|
||||
/// </summary>
|
||||
public string AllowedScopes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// a Comma-separated List which Specified White List IP ...
|
||||
/// </summary>
|
||||
public string AllowedIPs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rate Limit Per Minute ...
|
||||
/// </summary>
|
||||
public int RateLimitPerMinute { get; set; } = 60;
|
||||
|
||||
//
|
||||
/// <summary>
|
||||
/// Related Application ...
|
||||
/// </summary>
|
||||
public virtual XApplicationDto Application { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using xModels.Base;
|
||||
|
||||
namespace xIdentityModels.Dtos
|
||||
{
|
||||
public class XApiKeyUsageDto : XBaseLongIDEntityDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Api Key Id ...
|
||||
/// </summary>
|
||||
public Guid ApiKeyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Called Endpoint ...
|
||||
/// </summary>
|
||||
public string Endpoint { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Called Http Method ...
|
||||
/// </summary>
|
||||
public string HttpMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Client IP Address ...
|
||||
/// </summary>
|
||||
public string ClientIP { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Status Code ...
|
||||
/// </summary>
|
||||
public int StatusCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Request Time ...
|
||||
/// </summary>
|
||||
public DateTime RequestedOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Response Time in Milliseconds ...
|
||||
/// </summary>
|
||||
public long ResponseTimeMs { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using xModels.Base;
|
||||
using xModels.Dtos;
|
||||
using xIdentityModels.Constants;
|
||||
|
||||
namespace xIdentityModels.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// an Application in xDashboard ...
|
||||
/// </summary>
|
||||
public class XApplicationDto : XBaseIntIDEntityDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Name ...
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Descriptor ...
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Owner Id ...
|
||||
/// </summary>
|
||||
public string OwnerId { get; set; }
|
||||
public virtual XPersonDto Owner { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Application Type ...
|
||||
/// </summary>
|
||||
public XApplicationType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Specified Application is Active or not ...
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Application Create Time ...
|
||||
/// </summary>
|
||||
public DateTime CreatedOn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Application Update Type ...
|
||||
/// </summary>
|
||||
public DateTime UpdatedAt { get; set; }
|
||||
}
|
||||
}
|
||||
+169
-11
@@ -1,19 +1,25 @@
|
||||
using System;
|
||||
using xModels.Dtos;
|
||||
using xCommons.Extensions;
|
||||
using xIdentityModels.Dtos;
|
||||
using xIdentityModels.Models;
|
||||
using System.Collections.Generic;
|
||||
using xIdentityModels.Descriptors;
|
||||
using xIdentityModels.Navigations;
|
||||
|
||||
namespace xIdentityModels.Extensions {
|
||||
public static class XModelExtensions {
|
||||
namespace xIdentityModels.Extensions
|
||||
{
|
||||
public static class XModelExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// /// Convert XIdentityUserDescriptor instance to XUser
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static XUser ToXUser (this XIdentityUserDescriptor source) {
|
||||
return new XUser {
|
||||
public static XUser ToXUser(this XIdentityUserDescriptor source)
|
||||
{
|
||||
return new XUser
|
||||
{
|
||||
Id = source.Id,
|
||||
FirstName = source.FirstName,
|
||||
LastName = source.LastName,
|
||||
@@ -29,16 +35,45 @@ namespace xIdentityModels.Extensions {
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a User to Person ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static XPersonDto ToXPerson(this XUser source)
|
||||
{
|
||||
//
|
||||
XPersonDto result = null;
|
||||
|
||||
//
|
||||
if (!source.IsNullOrDefault())
|
||||
{
|
||||
//
|
||||
result = new XPersonDto
|
||||
{
|
||||
Avatar = source.Avatar,
|
||||
Username = source.UserName,
|
||||
Lastname = source.LastName,
|
||||
Firstname = source.FirstName,
|
||||
};
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check a User is Same as Descriptor User
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="dest"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsSameAs (this XUser source, XIdentityUserDescriptor dest) {
|
||||
public static bool IsSameAs(this XUser source, XIdentityUserDescriptor dest)
|
||||
{
|
||||
//
|
||||
if (source.IsNull() ||
|
||||
dest.IsNull ()) {
|
||||
dest.IsNull())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -76,10 +111,12 @@ namespace xIdentityModels.Extensions {
|
||||
/// <param name="source"></param>
|
||||
/// <param name="dest"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsSameAs (this XDevice source, XDevice dest) {
|
||||
public static bool IsSameAs(this XDevice source, XDevice dest)
|
||||
{
|
||||
//
|
||||
if (source.IsNull() ||
|
||||
dest.IsNull ()) {
|
||||
dest.IsNull())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -99,15 +136,18 @@ namespace xIdentityModels.Extensions {
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static XTokenResponse ToXTokenResponse (this XUserClaimsInfoDto source) {
|
||||
public static XTokenResponse ToXTokenResponse(this XUserClaimsInfoDto source)
|
||||
{
|
||||
//
|
||||
if (source.IsNull() ||
|
||||
(source.AccessToken.IsNullOrEmpty () && source.RefreshToken.IsNullOrEmpty ())) {
|
||||
(source.AccessToken.IsNullOrEmpty() && source.RefreshToken.IsNullOrEmpty()))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
//
|
||||
var result = new XTokenResponse {
|
||||
var result = new XTokenResponse
|
||||
{
|
||||
AccessToken = source.AccessToken,
|
||||
RefreshToken = source.RefreshToken,
|
||||
ExpiresAt = source.ExpiresAt
|
||||
@@ -116,5 +156,123 @@ namespace xIdentityModels.Extensions {
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValid(this XCreateApiKeyRequest source)
|
||||
{
|
||||
//
|
||||
var result = !source.IsNull();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Item for Add or Update ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValidForAdd(this XApplication source)
|
||||
{
|
||||
//
|
||||
var result =
|
||||
!source.IsNullOrDefault() &&
|
||||
!source.Name.IsNullOrEmpty();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Item for Add or Update ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValidForAdd(this XApplicationDto source)
|
||||
{
|
||||
//
|
||||
var result =
|
||||
!source.IsNullOrDefault() &&
|
||||
!source.Name.IsNullOrEmpty();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Item for Add or Update ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValidForAdd(this XApiKey source)
|
||||
{
|
||||
//
|
||||
var result =
|
||||
!source.IsNullOrDefault() &&
|
||||
!source.ApplicationId.IsValidIntId() &&
|
||||
!source.KeyHash.IsNullOrEmpty();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Item for Add or Update ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValidForAdd(this XApiKeyDto source)
|
||||
{
|
||||
//
|
||||
var result =
|
||||
!source.IsNullOrDefault() &&
|
||||
!source.ApplicationId.IsValidIntId() &&
|
||||
!source.KeyHash.IsNullOrEmpty();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Item for Add or Update ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValidForAdd(this XApiKeyUsage source)
|
||||
{
|
||||
//
|
||||
var result =
|
||||
!source.IsNullOrDefault() &&
|
||||
!source.ApiKeyId.IsDefaultGuid() &&
|
||||
!source.ClientIP.IsNullOrEmpty() &&
|
||||
!source.Endpoint.IsNullOrEmpty() &&
|
||||
!source.HttpMethod.IsNullOrEmpty();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Item for Add or Update ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsValidForAdd(this XApiKeyUsageDto source)
|
||||
{
|
||||
//
|
||||
var result =
|
||||
!source.IsNullOrDefault() &&
|
||||
!source.ApiKeyId.IsDefaultGuid() &&
|
||||
!source.ClientIP.IsNullOrEmpty() &&
|
||||
!source.Endpoint.IsNullOrEmpty() &&
|
||||
!source.HttpMethod.IsNullOrEmpty();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using xCommons.Extensions;
|
||||
using xIdentityModels.Dtos;
|
||||
@@ -5,8 +6,6 @@ using xIdentityModels.Models;
|
||||
using xIdentityModels.Constants;
|
||||
using System.Collections.Generic;
|
||||
using xIdentityModels.Configurations;
|
||||
using Microsoft.OpenApi.Expressions;
|
||||
using System;
|
||||
|
||||
namespace xIdentityModels.Extensions
|
||||
{
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace xIdentityModels.Models
|
||||
{
|
||||
public class XApiKeyValidationResult
|
||||
{
|
||||
public string OwnerId { get; set; }
|
||||
public int ApplicationId { get; set; }
|
||||
public IList<string> Scopes {get; set;} = [];
|
||||
public IList<string> Errors { get; set; } = [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace xIdentityModels.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Create Specified Api Key ...
|
||||
/// </summary>
|
||||
public class XCreateApiKeyRequest
|
||||
{
|
||||
public int? RateLimit {get; set;} = null;
|
||||
public TimeSpan? Expiration {get; set;} = null;
|
||||
public IEnumerable<string> Scopes {get; set;} = null;
|
||||
public IEnumerable<string> AllowedIPs {get; set;} = null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace xIdentityModels.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Rotate Specified Api Key ...
|
||||
/// </summary>
|
||||
public class XRotateApiKeyRequest
|
||||
{
|
||||
public TimeSpan? NewExpiration { get; set; } = null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user