2 Commits

View File

@@ -231,7 +231,6 @@ namespace Core.Thalos.Provider.Providers.Onboarding
}, },
{ "status", Core.Blueprint.Mongo.StatusEnum.Active.ToString() } { "status", Core.Blueprint.Mongo.StatusEnum.Active.ToString() }
}), }),
new BsonDocument("$lookup", new BsonDocument new BsonDocument("$lookup", new BsonDocument
{ {
{ "from", "Roles" }, { "from", "Roles" },
@@ -239,11 +238,8 @@ namespace Core.Thalos.Provider.Providers.Onboarding
{ "foreignField", "_id" }, { "foreignField", "_id" },
{ "as", "role" } { "as", "role" }
}), }),
new BsonDocument("$unwind", "$role"), new BsonDocument("$unwind", "$role"),
new BsonDocument("$match", new BsonDocument("role.status", Core.Blueprint.Mongo.StatusEnum.Active.ToString())), new BsonDocument("$match", new BsonDocument("role.status", Core.Blueprint.Mongo.StatusEnum.Active.ToString())),
// Tenant lookup
new BsonDocument("$lookup", new BsonDocument new BsonDocument("$lookup", new BsonDocument
{ {
{ "from", "Tenants" }, { "from", "Tenants" },
@@ -252,7 +248,6 @@ namespace Core.Thalos.Provider.Providers.Onboarding
{ "as", "tenant" } { "as", "tenant" }
}), }),
new BsonDocument("$unwind", "$tenant"), new BsonDocument("$unwind", "$tenant"),
new BsonDocument("$addFields", new BsonDocument new BsonDocument("$addFields", new BsonDocument
{ {
{ "role.permissions", new BsonDocument("$map", new BsonDocument { "role.permissions", new BsonDocument("$map", new BsonDocument
@@ -270,7 +265,6 @@ namespace Core.Thalos.Provider.Providers.Onboarding
}) })
} }
}), }),
new BsonDocument("$lookup", new BsonDocument new BsonDocument("$lookup", new BsonDocument
{ {
{ "from", "Permissions" }, { "from", "Permissions" },
@@ -343,6 +337,12 @@ namespace Core.Thalos.Provider.Providers.Onboarding
if (result is null) return null; if (result is null) return null;
DateTime SafeToUtc(BsonValue value)
{
if (value == null || value.IsBsonNull) return DateTime.MinValue;
return value.IsBsonDateTime ? value.ToUniversalTime() : DateTime.MinValue;
}
var tokenAdapter = new TokenAdapter var tokenAdapter = new TokenAdapter
{ {
User = new UserAdapter User = new UserAdapter
@@ -354,11 +354,11 @@ namespace Core.Thalos.Provider.Providers.Onboarding
LastName = result.Contains("lastName") && !result["lastName"].IsBsonNull ? result["lastName"].AsString : string.Empty, LastName = result.Contains("lastName") && !result["lastName"].IsBsonNull ? result["lastName"].AsString : string.Empty,
DisplayName = result.Contains("displayName") && !result["displayName"].IsBsonNull ? result["displayName"].AsString : string.Empty, DisplayName = result.Contains("displayName") && !result["displayName"].IsBsonNull ? result["displayName"].AsString : string.Empty,
RoleId = result.Contains("roleId") && !result["roleId"].IsBsonNull ? result["roleId"].ToString() : string.Empty, RoleId = result.Contains("roleId") && !result["roleId"].IsBsonNull ? result["roleId"].ToString() : string.Empty,
LastLogIn = result.Contains("lastLogIn") && !result["lastLogIn"].IsBsonNull ? result["lastLogIn"].ToUniversalTime() : DateTime.MinValue, LastLogIn = SafeToUtc(result.Contains("lastLogIn") ? result["lastLogIn"] : null),
LastLogOut = result.Contains("lastLogOut") && !result["lastLogOut"].IsBsonNull ? result["lastLogOut"].ToUniversalTime() : DateTime.MinValue, LastLogOut = SafeToUtc(result.Contains("lastLogOut") ? result["lastLogOut"] : null),
CreatedAt = result.Contains("createdAt") && !result["createdAt"].IsBsonNull ? result["createdAt"].ToUniversalTime() : DateTime.MinValue, CreatedAt = SafeToUtc(result.Contains("createdAt") ? result["createdAt"] : null),
UpdatedAt = SafeToUtc(result.Contains("updatedAt") ? result["updatedAt"] : null),
CreatedBy = result.Contains("createdBy") && !result["createdBy"].IsBsonNull ? result["createdBy"].AsString : string.Empty, CreatedBy = result.Contains("createdBy") && !result["createdBy"].IsBsonNull ? result["createdBy"].AsString : string.Empty,
UpdatedAt = result.Contains("updatedAt") && !result["updatedAt"].IsBsonNull ? result["updatedAt"].ToUniversalTime() : DateTime.MinValue,
UpdatedBy = result.Contains("updatedBy") && !result["updatedBy"].IsBsonNull ? result["updatedBy"].AsString : string.Empty, UpdatedBy = result.Contains("updatedBy") && !result["updatedBy"].IsBsonNull ? result["updatedBy"].AsString : string.Empty,
Status = result.Contains("status") && !result["status"].IsBsonNull Status = result.Contains("status") && !result["status"].IsBsonNull
? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["status"].AsString) ? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["status"].AsString)
@@ -404,24 +404,18 @@ namespace Core.Thalos.Provider.Providers.Onboarding
!result["role"]["status"].IsBsonNull !result["role"]["status"].IsBsonNull
? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["role"]["status"].AsString) ? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["role"]["status"].AsString)
: Core.Blueprint.Mongo.StatusEnum.Inactive, : Core.Blueprint.Mongo.StatusEnum.Inactive,
CreatedAt = result.Contains("role") && result["role"].IsBsonDocument && CreatedAt = SafeToUtc(result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("createdAt")
result["role"].AsBsonDocument.Contains("createdAt") && ? result["role"]["createdAt"]
!result["role"]["createdAt"].IsBsonNull : null),
? result["role"]["createdAt"].ToUniversalTime() UpdatedAt = SafeToUtc(result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("updatedAt")
: DateTime.MinValue, ? result["role"]["updatedAt"]
UpdatedAt = result.Contains("role") && result["role"].IsBsonDocument && : null),
result["role"].AsBsonDocument.Contains("updatedAt") &&
!result["role"]["updatedAt"].IsBsonNull
? result["role"]["updatedAt"].ToUniversalTime()
: DateTime.MinValue,
CreatedBy = result.Contains("role") && result["role"].IsBsonDocument && CreatedBy = result.Contains("role") && result["role"].IsBsonDocument &&
result["role"].AsBsonDocument.Contains("createdBy") && result["role"].AsBsonDocument.Contains("createdBy") && !result["role"]["createdBy"].IsBsonNull
!result["role"]["createdBy"].IsBsonNull
? result["role"]["createdBy"].AsString ? result["role"]["createdBy"].AsString
: string.Empty, : string.Empty,
UpdatedBy = result.Contains("role") && result["role"].IsBsonDocument && UpdatedBy = result.Contains("role") && result["role"].IsBsonDocument &&
result["role"].AsBsonDocument.Contains("updatedBy") && result["role"].AsBsonDocument.Contains("updatedBy") && !result["role"]["updatedBy"].IsBsonNull
!result["role"]["updatedBy"].IsBsonNull
? result["role"]["updatedBy"].AsString ? result["role"]["updatedBy"].AsString
: string.Empty : string.Empty
}, },
@@ -470,12 +464,12 @@ namespace Core.Thalos.Provider.Providers.Onboarding
Isolated = result["tenant"].AsBsonDocument.Contains("isolated") && !result["tenant"]["isolated"].IsBsonNull Isolated = result["tenant"].AsBsonDocument.Contains("isolated") && !result["tenant"]["isolated"].IsBsonNull
? result["tenant"]["isolated"].ToBoolean() ? result["tenant"]["isolated"].ToBoolean()
: false, : false,
CreatedAt = result["tenant"].AsBsonDocument.Contains("createdAt") && !result["tenant"]["createdAt"].IsBsonNull CreatedAt = SafeToUtc(result.Contains("tenant") && result["tenant"].IsBsonDocument && result["tenant"].AsBsonDocument.Contains("createdAt")
? result["tenant"]["createdAt"].ToUniversalTime() ? result["tenant"]["createdAt"]
: DateTime.MinValue, : null),
UpdatedAt = result["tenant"].AsBsonDocument.Contains("updatedAt") && !result["tenant"]["updatedAt"].IsBsonNull UpdatedAt = SafeToUtc(result.Contains("tenant") && result["tenant"].IsBsonDocument && result["tenant"].AsBsonDocument.Contains("updatedAt")
? result["tenant"]["updatedAt"].ToUniversalTime() ? result["tenant"]["updatedAt"]
: DateTime.MinValue, : null),
CreatedBy = result["tenant"].AsBsonDocument.Contains("createdBy") && !result["tenant"]["createdBy"].IsBsonNull CreatedBy = result["tenant"].AsBsonDocument.Contains("createdBy") && !result["tenant"]["createdBy"].IsBsonNull
? result["tenant"]["createdBy"].AsString ? result["tenant"]["createdBy"].AsString
: string.Empty, : string.Empty,
@@ -503,9 +497,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding
: new List<ModuleAdapter>() : new List<ModuleAdapter>()
}; };
return tokenAdapter; return tokenAdapter;
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -513,6 +505,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding
} }
} }
/// <summary> /// <summary>
/// Deletes an User by _id. /// Deletes an User by _id.
/// </summary> /// </summary>