|
8 | 8 | from uuid import UUID
|
9 | 9 | from google.protobuf.json_format import MessageToJson
|
10 | 10 |
|
| 11 | +from indykite_sdk.utils.hash_methods import encrypt_bcrypt, encrypt_sha256 |
11 | 12 | from indykite_sdk.identity import IdentityClient
|
12 | 13 | from indykite_sdk.config import ConfigClient
|
13 | 14 | from indykite_sdk.indykite.config.v1beta1.model_pb2 import (SendGridProviderConfig, MailJetProviderConfig, AmazonSESProviderConfig, MailgunProviderConfig)
|
14 | 15 | from indykite_sdk.indykite.config.v1beta1.model_pb2 import (EmailServiceConfig, AuthFlowConfig, OAuth2ClientConfig, IngestMappingConfig)
|
15 | 16 | from indykite_sdk.indykite.config.v1beta1.model_pb2 import OAuth2ProviderConfig, OAuth2ApplicationConfig
|
16 | 17 | from indykite_sdk.indykite.identity.v1beta2.import_pb2 import ImportDigitalTwinsRequest, ImportDigitalTwin
|
17 |
| -from indykite_sdk.indykite.identity.v1beta2.import_pb2 import PasswordCredential, PasswordHash, Bcrypt |
| 18 | +from indykite_sdk.indykite.identity.v1beta2.import_pb2 import PasswordCredential, PasswordHash, Bcrypt, SHA256 |
18 | 19 | from indykite_sdk.indykite.config.v1beta1.model_pb2 import EmailAttachment, Email, EmailMessage, EmailTemplate, EmailDefinition
|
19 | 20 | from indykite_sdk.indykite.config.v1beta1.model_pb2 import google_dot_protobuf_dot_wrappers__pb2 as wrappers
|
20 | 21 | from indykite_sdk.indykite.identity.v1beta2.import_pb2 import Email as EmailIdentity
|
21 | 22 |
|
| 23 | + |
22 | 24 | class ParseKwargs(argparse.Action):
|
23 | 25 | def __call__(self, parser, namespace, values, option_string=None): # pragma: no cover
|
24 | 26 | setattr(namespace, self.dest, dict())
|
@@ -438,6 +440,20 @@ def main():
|
438 | 440 |
|
439 | 441 | # import_digital_twins
|
440 | 442 | import_digital_twins_parser = subparsers.add_parser("import_digital_twins")
|
| 443 | + import_digital_twins_parser.add_argument("tenant_id", help="Tenant id (gid)") |
| 444 | + |
| 445 | + # import_digital_twins_hash |
| 446 | + import_digital_twins_hash_parser = subparsers.add_parser("import_digital_twins_hash") |
| 447 | + import_digital_twins_hash_parser.add_argument("tenant_id", help="Tenant id (gid)") |
| 448 | + |
| 449 | + # import_digital_twins_hash256 |
| 450 | + import_digital_twins_hash256_parser = subparsers.add_parser("import_digital_twins_hash256") |
| 451 | + import_digital_twins_hash256_parser.add_argument("tenant_id", help="Tenant id (gid)") |
| 452 | + |
| 453 | + # import_digital_twins_update |
| 454 | + import_digital_twins_update_parser = subparsers.add_parser("import_digital_twins_update") |
| 455 | + import_digital_twins_update_parser.add_argument("id", help="Digital Twin id (gid)") |
| 456 | + import_digital_twins_update_parser.add_argument("tenant_id", help="Tenant id (gid)") |
441 | 457 |
|
442 | 458 | args = parser.parse_args()
|
443 | 459 | local = args.local
|
@@ -1477,25 +1493,133 @@ def main():
|
1477 | 1493 | elif command == "import_digital_twins":
|
1478 | 1494 |
|
1479 | 1495 | entities = [ImportDigitalTwin(
|
1480 |
| - tenant_id="696e6479-6b69-4465-8000-030f00000001", |
| 1496 | + tenant_id=args.tenant_id, |
1481 | 1497 | kind="DIGITAL_TWIN_KIND_PERSON",
|
1482 | 1498 | state="DIGITAL_TWIN_STATE_ACTIVE",
|
1483 | 1499 | password=PasswordCredential(
|
1484 | 1500 | email=EmailIdentity(
|
1485 |
| - email="test2000@example.com", |
| 1501 | + email="test2101@example.com", |
1486 | 1502 | verified=True
|
1487 | 1503 | ),
|
1488 |
| - hash=PasswordHash( |
1489 |
| - password_hash=bytes("$2y$10$k64jP7oqwYfQpzmoqAN5OuhrtWI2wICn0wXUzYxMp.UA1PopI653G", "utf-8") |
| 1504 | + value="password" |
| 1505 | + ) |
| 1506 | + ), |
| 1507 | + ImportDigitalTwin( |
| 1508 | + tenant_id=args.tenant_id, |
| 1509 | + kind="DIGITAL_TWIN_KIND_PERSON", |
| 1510 | + state="DIGITAL_TWIN_STATE_ACTIVE", |
| 1511 | + password=PasswordCredential( |
| 1512 | + email=EmailIdentity( |
| 1513 | + |
| 1514 | + verified=True |
| 1515 | + ), |
| 1516 | + value="password" |
| 1517 | + ) |
| 1518 | + ), |
| 1519 | + ImportDigitalTwin( |
| 1520 | + tenant_id=args.tenant_id, |
| 1521 | + kind="DIGITAL_TWIN_KIND_PERSON", |
| 1522 | + state="DIGITAL_TWIN_STATE_ACTIVE", |
| 1523 | + password=PasswordCredential( |
| 1524 | + email=EmailIdentity( |
| 1525 | + |
| 1526 | + verified=True |
| 1527 | + ), |
| 1528 | + value="password" |
1490 | 1529 | )
|
1491 | 1530 | )
|
| 1531 | + ] |
| 1532 | + hash_algorithm = None |
| 1533 | + |
| 1534 | + import_digital_twins_config_response = client.import_digital_twins( |
| 1535 | + entities, hash_algorithm) |
| 1536 | + if import_digital_twins_config_response: |
| 1537 | + for response in import_digital_twins_config_response: |
| 1538 | + print_response(response) |
| 1539 | + else: |
| 1540 | + print("Invalid import digital twins response") |
| 1541 | + return import_digital_twins_config_response |
| 1542 | + |
| 1543 | + elif command == "import_digital_twins_hash": |
| 1544 | + |
| 1545 | + password = 'passwordabc' |
| 1546 | + hash_dict = encrypt_bcrypt(password) |
| 1547 | + for key in hash_dict: |
| 1548 | + salt = key |
| 1549 | + hash_password = hash_dict[key] |
| 1550 | + |
| 1551 | + entities = [ImportDigitalTwin( |
| 1552 | + tenant_id=args.tenant_id, |
| 1553 | + kind="DIGITAL_TWIN_KIND_PERSON", |
| 1554 | + state="DIGITAL_TWIN_STATE_ACTIVE", |
| 1555 | + password=PasswordCredential( |
| 1556 | + email=EmailIdentity( |
| 1557 | + |
| 1558 | + verified=True |
| 1559 | + ), |
| 1560 | + hash=PasswordHash(password_hash=hash_password,salt=salt) |
| 1561 | + ) |
| 1562 | + )] |
| 1563 | + hash_algorithm = {"bcrypt": {}} |
| 1564 | + |
| 1565 | + import_digital_twins_config_response = client.import_digital_twins( |
| 1566 | + entities, hash_algorithm) |
| 1567 | + if import_digital_twins_config_response: |
| 1568 | + for response in import_digital_twins_config_response: |
| 1569 | + print_response(response) |
| 1570 | + else: |
| 1571 | + print("Invalid import digital twins response") |
| 1572 | + return import_digital_twins_config_response |
| 1573 | + |
| 1574 | + elif command == "import_digital_twins_hash256": |
| 1575 | + |
| 1576 | + password = 'passwordabc' |
| 1577 | + hash_password = encrypt_sha256(password) |
| 1578 | + |
| 1579 | + entities = [ImportDigitalTwin( |
| 1580 | + tenant_id=args.tenant_id, |
| 1581 | + kind="DIGITAL_TWIN_KIND_PERSON", |
| 1582 | + state="DIGITAL_TWIN_STATE_ACTIVE", |
| 1583 | + password=PasswordCredential( |
| 1584 | + email=EmailIdentity( |
| 1585 | + |
| 1586 | + verified=True |
| 1587 | + ), |
| 1588 | + hash=PasswordHash(password_hash=hash_password) |
| 1589 | + ) |
| 1590 | + )] |
| 1591 | + hash_algorithm = {"sha256": SHA256(rounds=14)} |
| 1592 | + |
| 1593 | + import_digital_twins_config_response = client.import_digital_twins( |
| 1594 | + entities, hash_algorithm) |
| 1595 | + if import_digital_twins_config_response: |
| 1596 | + for response in import_digital_twins_config_response: |
| 1597 | + print_response(response) |
| 1598 | + else: |
| 1599 | + print("Invalid import digital twins response") |
| 1600 | + return import_digital_twins_config_response |
| 1601 | + |
| 1602 | + elif command == "import_digital_twins_update": |
| 1603 | + entities = [ImportDigitalTwin( |
| 1604 | + id=args.id, |
| 1605 | + tenant_id=args.tenant_id, |
| 1606 | + kind="DIGITAL_TWIN_KIND_PERSON", |
| 1607 | + state="DIGITAL_TWIN_STATE_ACTIVE", |
| 1608 | + password=PasswordCredential( |
| 1609 | + email=EmailIdentity( |
| 1610 | + |
| 1611 | + verified=True |
| 1612 | + ), |
| 1613 | + value="password" |
| 1614 | + ) |
1492 | 1615 | )]
|
1493 |
| - hash_algorithm = Bcrypt() |
| 1616 | + hash_algorithm = None |
1494 | 1617 |
|
1495 | 1618 | import_digital_twins_config_response = client.import_digital_twins(
|
1496 |
| - entities,hash_algorithm) |
| 1619 | + entities, hash_algorithm) |
1497 | 1620 | if import_digital_twins_config_response:
|
1498 |
| - print_response(import_digital_twins_config_response) |
| 1621 | + for response in import_digital_twins_config_response: |
| 1622 | + print_response(response) |
1499 | 1623 | else:
|
1500 | 1624 | print("Invalid import digital twins response")
|
1501 | 1625 | return import_digital_twins_config_response
|
|
0 commit comments