120 lines
4.5 KiB
C#
120 lines
4.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using xCommons.Extensions;
|
|
using xIdentityModels.Descriptors;
|
|
using xIdentityModels.Models;
|
|
using xIdentityModels.Navigations;
|
|
|
|
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 {
|
|
Id = source.Id,
|
|
FirstName = source.FirstName,
|
|
LastName = source.LastName,
|
|
UserName = source.UserName,
|
|
Email = source.Email,
|
|
EmailConfirmed = source.EmailConfirmed,
|
|
PhoneNumber = source.PhoneNumber,
|
|
PhoneNumberConfirmed = source.PhoneNumberConfirmed,
|
|
IsEnable = true,
|
|
IsBanned = false,
|
|
CreationDate = DateTime.UtcNow,
|
|
DateOfBirth = DateTime.Parse (source.DateOfBirth)
|
|
};
|
|
}
|
|
|
|
/// <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) {
|
|
//
|
|
if (source.IsNull () ||
|
|
dest.IsNull ()) {
|
|
return false;
|
|
}
|
|
|
|
//
|
|
var isSame = source.IsSameContent (dest, propertyWhiteList : new [] {
|
|
nameof (XIdentityUserDescriptor.FirstName),
|
|
nameof (XIdentityUserDescriptor.LastName),
|
|
nameof (XIdentityUserDescriptor.UserName),
|
|
nameof (XIdentityUserDescriptor.Email),
|
|
nameof (XIdentityUserDescriptor.EmailConfirmed),
|
|
nameof (XIdentityUserDescriptor.PhoneNumber),
|
|
nameof (XIdentityUserDescriptor.PhoneNumberConfirmed),
|
|
nameof (XIdentityUserDescriptor.IsEnable),
|
|
nameof (XIdentityUserDescriptor.IsBanned),
|
|
nameof (XIdentityUserDescriptor.DateOfBirth)
|
|
},
|
|
propertyValueCheckers : new [] {
|
|
new KeyValuePair<string, Func<XUser, XIdentityUserDescriptor, bool>> (
|
|
nameof (XIdentityUserDescriptor.DateOfBirth),
|
|
(user, descriptorUser) => {
|
|
//
|
|
var descriptorUserDateOfBirth = DateTime.Parse (descriptorUser.DateOfBirth);
|
|
return DateTime.Equals (user.DateOfBirth, descriptorUserDateOfBirth);
|
|
})
|
|
}
|
|
);
|
|
|
|
//
|
|
return isSame;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check to XDevice instance to be same or not
|
|
/// </summary>
|
|
/// <param name="source"></param>
|
|
/// <param name="dest"></param>
|
|
/// <returns></returns>
|
|
public static bool IsSameAs (this XDevice source, XDevice dest) {
|
|
//
|
|
if (source.IsNull () ||
|
|
dest.IsNull ()) {
|
|
return false;
|
|
}
|
|
|
|
//
|
|
var isSame = source.Os.ToNormalString () == dest.Os.ToNormalString () &&
|
|
source.OsVersion.ToNormalString () == dest.OsVersion.ToNormalString () &&
|
|
source.Browser.ToNormalString () == dest.Browser.ToNormalString () &&
|
|
source.UserAgent.ToNormalString () == dest.UserAgent.ToNormalString () &&
|
|
source.DeviceType == dest.DeviceType;
|
|
|
|
//
|
|
return isSame;
|
|
}
|
|
|
|
/// <summary>
|
|
/// convert UserClaimsInfo to TokenResponse ...
|
|
/// </summary>
|
|
/// <param name="source"></param>
|
|
/// <returns></returns>
|
|
public static XTokenResponse ToXTokenResponse (this XUserClaimsInfoDto source) {
|
|
//
|
|
if (source.IsNull () ||
|
|
(source.AccessToken.IsNullOrEmpty () && source.RefreshToken.IsNullOrEmpty ())) {
|
|
return null;
|
|
}
|
|
|
|
//
|
|
var result = new XTokenResponse {
|
|
AccessToken = source.AccessToken,
|
|
RefreshToken = source.RefreshToken,
|
|
ExpiresAt = source.ExpiresAt
|
|
};
|
|
|
|
//
|
|
return result;
|
|
}
|
|
}
|
|
} |