Compare commits
	
		
			2 Commits
		
	
	
		
			739e9e9c85
			...
			developmen
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a7aad12742 | |||
| 8c3f8f6402 | 
| @@ -221,128 +221,128 @@ namespace Core.Thalos.Provider.Providers.Onboarding | |||||||
|             { |             { | ||||||
|                 var pipeline = new[] |                 var pipeline = new[] | ||||||
|                 { |                 { | ||||||
|                     new BsonDocument("$match", new BsonDocument |             new BsonDocument("$match", new BsonDocument | ||||||
|  |             { | ||||||
|  |                 { "email", new BsonDocument | ||||||
|                     { |                     { | ||||||
|                         { "email", new BsonDocument |                         { "$regex", $"^{Regex.Escape(email)}$" }, | ||||||
|                             { |                         { "$options", "i" } | ||||||
|                                 { "$regex", $"^{Regex.Escape(email)}$" }, |                     } | ||||||
|                                 { "$options", "i" } |                 }, | ||||||
|                             } |                 { "status", Core.Blueprint.Mongo.StatusEnum.Active.ToString() } | ||||||
|                         }, |             }), | ||||||
|                         { "status", Core.Blueprint.Mongo.StatusEnum.Active.ToString() } |             new BsonDocument("$lookup", new BsonDocument | ||||||
|                     }), |             { | ||||||
|  |                 { "from", "Roles" }, | ||||||
|                     new BsonDocument("$lookup", new BsonDocument |                 { "localField", "roleId" }, | ||||||
|  |                 { "foreignField", "_id" }, | ||||||
|  |                 { "as", "role" } | ||||||
|  |             }), | ||||||
|  |             new BsonDocument("$unwind", "$role"), | ||||||
|  |             new BsonDocument("$match", new BsonDocument("role.status", Core.Blueprint.Mongo.StatusEnum.Active.ToString())), | ||||||
|  |             new BsonDocument("$lookup", new BsonDocument | ||||||
|  |             { | ||||||
|  |                 { "from", "Tenants" }, | ||||||
|  |                 { "localField", "tenantId" }, | ||||||
|  |                 { "foreignField", "_id" }, | ||||||
|  |                 { "as", "tenant" } | ||||||
|  |             }), | ||||||
|  |             new BsonDocument("$unwind", "$tenant"), | ||||||
|  |             new BsonDocument("$addFields", new BsonDocument | ||||||
|  |             { | ||||||
|  |                 { "role.permissions", new BsonDocument("$map", new BsonDocument | ||||||
|                     { |                     { | ||||||
|                         { "from", "Roles" }, |                         { "input", "$role.permissions" }, | ||||||
|                         { "localField", "roleId" }, |                         { "as", "perm" }, | ||||||
|                         { "foreignField", "_id" }, |                         { "in", new BsonDocument("$toObjectId", "$$perm") } | ||||||
|                         { "as", "role" } |  | ||||||
|                     }), |  | ||||||
|  |  | ||||||
|                     new BsonDocument("$unwind", "$role"), |  | ||||||
|                     new BsonDocument("$match", new BsonDocument("role.status", Core.Blueprint.Mongo.StatusEnum.Active.ToString())), |  | ||||||
|  |  | ||||||
|                     // Tenant lookup |  | ||||||
|                     new BsonDocument("$lookup", new BsonDocument |  | ||||||
|                     { |  | ||||||
|                         { "from", "Tenants" }, |  | ||||||
|                         { "localField", "tenantId" }, |  | ||||||
|                         { "foreignField", "_id" }, |  | ||||||
|                         { "as", "tenant" } |  | ||||||
|                     }), |  | ||||||
|                     new BsonDocument("$unwind", "$tenant"), |  | ||||||
|  |  | ||||||
|                     new BsonDocument("$addFields", new BsonDocument |  | ||||||
|                     { |  | ||||||
|                         { "role.permissions", new BsonDocument("$map", new BsonDocument |  | ||||||
|                             { |  | ||||||
|                                 { "input", "$role.permissions" }, |  | ||||||
|                                 { "as", "perm" }, |  | ||||||
|                                 { "in", new BsonDocument("$toObjectId", "$$perm") } |  | ||||||
|                             }) |  | ||||||
|                         }, |  | ||||||
|                         { "role.modules", new BsonDocument("$map", new BsonDocument |  | ||||||
|                             { |  | ||||||
|                                 { "input", "$role.modules" }, |  | ||||||
|                                 { "as", "mod" }, |  | ||||||
|                                 { "in", new BsonDocument("$toObjectId", "$$mod") } |  | ||||||
|                             }) |  | ||||||
|                         } |  | ||||||
|                     }), |  | ||||||
|  |  | ||||||
|                     new BsonDocument("$lookup", new BsonDocument |  | ||||||
|                     { |  | ||||||
|                         { "from", "Permissions" }, |  | ||||||
|                         { "localField", "role.permissions" }, |  | ||||||
|                         { "foreignField", "_id" }, |  | ||||||
|                         { "as", "permissions" } |  | ||||||
|                     }), |  | ||||||
|                     new BsonDocument("$lookup", new BsonDocument |  | ||||||
|                     { |  | ||||||
|                         { "from", "Modules" }, |  | ||||||
|                         { "localField", "role.modules" }, |  | ||||||
|                         { "foreignField", "_id" }, |  | ||||||
|                         { "as", "modules" } |  | ||||||
|                     }), |  | ||||||
|                     new BsonDocument("$project", new BsonDocument |  | ||||||
|                     { |  | ||||||
|                         { "_id", 1 }, |  | ||||||
|                         { "guid", 1 }, |  | ||||||
|                         { "email", 1 }, |  | ||||||
|                         { "name", 1 }, |  | ||||||
|                         { "middleName", 1 }, |  | ||||||
|                         { "lastName", 1 }, |  | ||||||
|                         { "displayName", 1 }, |  | ||||||
|                         { "roleId", 1 }, |  | ||||||
|                         { "companies", 1 }, |  | ||||||
|                         { "projects", 1 }, |  | ||||||
|                         { "lastLogIn", 1 }, |  | ||||||
|                         { "lastLogOut", 1 }, |  | ||||||
|                         { "createdBy", 1 }, |  | ||||||
|                         { "updatedBy", 1 }, |  | ||||||
|                         { "status", 1 }, |  | ||||||
|                         { "createdAt", 1 }, |  | ||||||
|                         { "updatedAt", 1 }, |  | ||||||
|                         { "role._id", 1 }, |  | ||||||
|                         { "role.name", 1 }, |  | ||||||
|                         { "role.description", 1 }, |  | ||||||
|                         { "role.applications", 1 }, |  | ||||||
|                         { "role.permissions", 1 }, |  | ||||||
|                         { "role.modules", 1 }, |  | ||||||
|                         { "role.status", 1 }, |  | ||||||
|                         { "role.createdAt", 1 }, |  | ||||||
|                         { "role.updatedAt", 1 }, |  | ||||||
|                         { "role.createdBy", 1 }, |  | ||||||
|                         { "role.updatedBy", 1 }, |  | ||||||
|                         { "tenant._id", 1 }, |  | ||||||
|                         { "tenant.name", 1 }, |  | ||||||
|                         { "tenant.taxIdentifier", 1 }, |  | ||||||
|                         { "tenant.addressLine1", 1 }, |  | ||||||
|                         { "tenant.addressLine2", 1 }, |  | ||||||
|                         { "tenant.city", 1 }, |  | ||||||
|                         { "tenant.state", 1 }, |  | ||||||
|                         { "tenant.country", 1 }, |  | ||||||
|                         { "tenant.postalCode", 1 }, |  | ||||||
|                         { "tenant.contactEmail", 1 }, |  | ||||||
|                         { "tenant.contactPhone", 1 }, |  | ||||||
|                         { "tenant.website", 1 }, |  | ||||||
|                         { "tenant.connectionString", 1 }, |  | ||||||
|                         { "tenant.isolated", 1 }, |  | ||||||
|                         { "tenant.status", 1 }, |  | ||||||
|                         { "tenant.createdAt", 1 }, |  | ||||||
|                         { "tenant.updatedAt", 1 }, |  | ||||||
|                         { "tenant.createdBy", 1 }, |  | ||||||
|                         { "tenant.updatedBy", 1 }, |  | ||||||
|                         { "permissions", 1 }, |  | ||||||
|                         { "modules", 1 } |  | ||||||
|                     }) |                     }) | ||||||
|                 }; |                 }, | ||||||
|  |                 { "role.modules", new BsonDocument("$map", new BsonDocument | ||||||
|  |                     { | ||||||
|  |                         { "input", "$role.modules" }, | ||||||
|  |                         { "as", "mod" }, | ||||||
|  |                         { "in", new BsonDocument("$toObjectId", "$$mod") } | ||||||
|  |                     }) | ||||||
|  |                 } | ||||||
|  |             }), | ||||||
|  |             new BsonDocument("$lookup", new BsonDocument | ||||||
|  |             { | ||||||
|  |                 { "from", "Permissions" }, | ||||||
|  |                 { "localField", "role.permissions" }, | ||||||
|  |                 { "foreignField", "_id" }, | ||||||
|  |                 { "as", "permissions" } | ||||||
|  |             }), | ||||||
|  |             new BsonDocument("$lookup", new BsonDocument | ||||||
|  |             { | ||||||
|  |                 { "from", "Modules" }, | ||||||
|  |                 { "localField", "role.modules" }, | ||||||
|  |                 { "foreignField", "_id" }, | ||||||
|  |                 { "as", "modules" } | ||||||
|  |             }), | ||||||
|  |             new BsonDocument("$project", new BsonDocument | ||||||
|  |             { | ||||||
|  |                 { "_id", 1 }, | ||||||
|  |                 { "guid", 1 }, | ||||||
|  |                 { "email", 1 }, | ||||||
|  |                 { "name", 1 }, | ||||||
|  |                 { "middleName", 1 }, | ||||||
|  |                 { "lastName", 1 }, | ||||||
|  |                 { "displayName", 1 }, | ||||||
|  |                 { "roleId", 1 }, | ||||||
|  |                 { "companies", 1 }, | ||||||
|  |                 { "projects", 1 }, | ||||||
|  |                 { "lastLogIn", 1 }, | ||||||
|  |                 { "lastLogOut", 1 }, | ||||||
|  |                 { "createdBy", 1 }, | ||||||
|  |                 { "updatedBy", 1 }, | ||||||
|  |                 { "status", 1 }, | ||||||
|  |                 { "createdAt", 1 }, | ||||||
|  |                 { "updatedAt", 1 }, | ||||||
|  |                 { "role._id", 1 }, | ||||||
|  |                 { "role.name", 1 }, | ||||||
|  |                 { "role.description", 1 }, | ||||||
|  |                 { "role.applications", 1 }, | ||||||
|  |                 { "role.permissions", 1 }, | ||||||
|  |                 { "role.modules", 1 }, | ||||||
|  |                 { "role.status", 1 }, | ||||||
|  |                 { "role.createdAt", 1 }, | ||||||
|  |                 { "role.updatedAt", 1 }, | ||||||
|  |                 { "role.createdBy", 1 }, | ||||||
|  |                 { "role.updatedBy", 1 }, | ||||||
|  |                 { "tenant._id", 1 }, | ||||||
|  |                 { "tenant.name", 1 }, | ||||||
|  |                 { "tenant.taxIdentifier", 1 }, | ||||||
|  |                 { "tenant.addressLine1", 1 }, | ||||||
|  |                 { "tenant.addressLine2", 1 }, | ||||||
|  |                 { "tenant.city", 1 }, | ||||||
|  |                 { "tenant.state", 1 }, | ||||||
|  |                 { "tenant.country", 1 }, | ||||||
|  |                 { "tenant.postalCode", 1 }, | ||||||
|  |                 { "tenant.contactEmail", 1 }, | ||||||
|  |                 { "tenant.contactPhone", 1 }, | ||||||
|  |                 { "tenant.website", 1 }, | ||||||
|  |                 { "tenant.connectionString", 1 }, | ||||||
|  |                 { "tenant.isolated", 1 }, | ||||||
|  |                 { "tenant.status", 1 }, | ||||||
|  |                 { "tenant.createdAt", 1 }, | ||||||
|  |                 { "tenant.updatedAt", 1 }, | ||||||
|  |                 { "tenant.createdBy", 1 }, | ||||||
|  |                 { "tenant.updatedBy", 1 }, | ||||||
|  |                 { "permissions", 1 }, | ||||||
|  |                 { "modules", 1 } | ||||||
|  |             }) | ||||||
|  |         }; | ||||||
|  |  | ||||||
|                 var result = await repository.FindOnePipelineAsync<BsonDocument>(pipeline); |                 var result = await repository.FindOnePipelineAsync<BsonDocument>(pipeline); | ||||||
|  |  | ||||||
|                 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> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user