add login_diagram

This commit is contained in:
2025-03-24 09:30:16 -05:00
parent 1f188e82ed
commit 538dc6b17c
5 changed files with 87 additions and 31 deletions

View File

@@ -4,34 +4,34 @@ sequenceDiagram
participant User participant User
participant Client participant Client
participant Server participant Server
Note over User,Client: Enrollment Note over User,Server: Enrollment
Client->>User: Signup Form Client->>User: Signup Form
Note left of User: email: user@example.com Note left of User: email: user@example.com
User->>Client: Submit Email User->>Client: Submit Email
Client->>+Server: Signup Session: user@example.com Client->>+Server: Signup Session: user@example.com
Server->>Server: Create Signup Session Server->>Server: Create Signup Session
Note over User,Client: Set nKode Note over User,Server: Set nKode
Server-->>-Client: signup_session_id, set_keypad, icons Server-->>-Client: signup_session_id, set_keypad, icons
Note left of Server: signup_session_id:<br/>92a2a1c6-3146-4d47-ac00-5160a7ebf104 Note left of Server: signup_session_id:<br/>e029138e-fb64-49ea-a6bc-b6b5affbf263
Note left of Server: set_keypad:<br/>Key 0: [ 7 14 3 28 23]<br/>Key 1: [ 1 26 15 10 5]<br/>Key 2: [13 20 27 4 29]<br/>Key 3: [25 8 21 16 11]<br/>Key 4: [19 2 9 22 17]<br/> Note left of Server: set_keypad:<br/>Key 0: [18 7 20 22 23]<br/>Key 1: [12 13 8 28 29]<br/>Key 2: [24 25 26 16 5]<br/>Key 3: [ 6 19 2 10 11]<br/>Key 4: [ 0 1 14 4 17]<br/>
Note left of Server: Icons:<br/>[😀,😂,🥳,😍,🤓<br/>😎,🥺,😡,😱,🤯<br/>🥰,😴,🤔,🙃,😇<br/>🤖,👽,👾,🐱,🐶<br/>🦁,🐻,🐸,🐙,🦄<br/>🌟,⚡,🔥,🍕,🎉] Note left of Server: Icons:<br/>[😀,😂,🥳,😍,🤓<br/>😎,🥺,😡,😱,🤯<br/>🥰,😴,🤔,🙃,😇<br/>🤖,👽,👾,🐱,🐶<br/>🦁,🐻,🐸,🐙,🦄<br/>🌟,⚡,🔥,🍕,🎉]
Client->>Client: Order Icons by keypad Client->>Client: Order Icons by keypad
Client->>User: Display Keypad Client->>User: Display Keypad
Note left of Client: Key 0: ['😡' '😇' '😍' '🍕' '🐙']<br/>Key 1: ['😂' '' '🤖' '🥰' '😎']<br/>Key 2: ['🙃' '🦁' '🔥' '🤓' '🎉']<br/>Key 3: ['🌟' '😱' '🐻' '👽' '😴']<br/>Key 4: ['🐶' '🥳' '🤯' '🐸' '👾']<br/> Note left of Client: Key 0: ['🐱' '😡' '🦁' '🐸' '🐙']<br/>Key 1: ['🤔' '🙃' '😱' '🍕' '🎉']<br/>Key 2: ['🦄' '🌟' '' '👽' '😎']<br/>Key 3: ['🥺' '🐶' '🥳' '🥰' '😴']<br/>Key 4: ['😀' '😂' '😇' '🤓' '👾']<br/>
Note left of User: User icons: ['😍' '🤓' '😇' '😡'] Note left of User: User icons: ['🐱' '🥳' '🐶' '']
User->>Client: Set Key Selection: [0, 2, 0, 0] User->>Client: Set Key Selection: [0, 3, 3, 2]
Client->>+Server: Set nKode:<br/>92a2a1c6-3146-4d47-ac00-5160a7ebf104<br/>[0, 2, 0, 0] Client->>+Server: Set nKode:<br/>e029138e-fb64-49ea-a6bc-b6b5affbf263<br/>[0, 3, 3, 2]
Server->>Server: Disperse Set Keypad Server->>Server: Disperse Set Keypad
Note over User,Client: Confirm nKode Note over User,Server: Confirm nKode
Server-->>-Client: signup_session_id, confirm_keypad, icons Server-->>-Client: signup_session_id, confirm_keypad, icons
Note left of Server: signup_session_id:<br/>92a2a1c6-3146-4d47-ac00-5160a7ebf104 Note left of Server: signup_session_id:<br/>e029138e-fb64-49ea-a6bc-b6b5affbf263
Note left of Server: confirm_keypad:<br/>Key 0: [ 7 26 21 4 17]<br/>Key 1: [19 20 3 16 5]<br/>Key 2: [ 1 8 9 28 29]<br/>Key 3: [13 14 15 22 11]<br/>Key 4: [25 2 27 10 23]<br/> Note left of Server: confirm_keypad:<br/>Key 0: [ 6 7 8 16 17]<br/>Key 1: [ 0 13 2 22 5]<br/>Key 2: [24 19 14 28 23]<br/>Key 3: [18 1 26 10 29]<br/>Key 4: [12 25 20 4 11]<br/>
Client->>Client: Order Icons by keypad Client->>Client: Order Icons by keypad
Client->>User: Display Keypad Client->>User: Display Keypad
Note left of Client: Key 0: ['😡' '' '🐻' '🤓' '👾']<br/>Key 1: ['🐶' '🦁' '😍' '👽' '😎']<br/>Key 2: ['😂' '😱' '🤯' '🍕' '🎉']<br/>Key 3: ['🙃' '😇' '🤖' '🐸' '😴']<br/>Key 4: ['🌟' '🥳' '🔥' '🥰' '🐙']<br/> Note left of Client: Key 0: ['🥺' '😡' '😱' '👽' '👾']<br/>Key 1: ['😀' '🙃' '🥳' '🐸' '😎']<br/>Key 2: ['🦄' '🐶' '😇' '🍕' '🐙']<br/>Key 3: ['🐱' '😂' '' '🥰' '🎉']<br/>Key 4: ['🤔' '🌟' '🦁' '🤓' '😴']<br/>
Note left of User: User icons: ['😍' '🤓' '😇' '😡'] Note left of User: User icons: ['🐱' '🥳' '🐶' '']
User->>Client: Key Selection: [1, 0, 3, 0] User->>Client: Key Selection: [3, 1, 2, 3]
Client->>+Server: Confirm nKode:<br/>92a2a1c6-3146-4d47-ac00-5160a7ebf104<br/>[1, 0, 3, 0] Client->>+Server: Confirm nKode:<br/>e029138e-fb64-49ea-a6bc-b6b5affbf263<br/>[3, 1, 2, 3]
Server->>Server: Create User Server->>Server: Create User
Server-->-Client: Success Server-->>-Client: Success
``` ```

View File

@@ -4,17 +4,17 @@ sequenceDiagram
participant User participant User
participant Client participant Client
participant Server participant Server
Note over User,Client: Enrollment Note over User,Server: Enrollment
Client->>User: Signup Form Client->>User: Signup Form
Note left of User: email: {{ email }} Note left of User: email: {{ email }}
User->>Client: Submit Email User->>Client: Submit Email
Client->>+Server: Signup Session: {{ email }} Client->>+Server: Signup Session: {{ email }}
Server->>Server: Create Signup Session Server->>Server: Create Signup Session
Note over User,Client: Set nKode Note over User,Server: Set nKode
Server-->>-Client: signup_session_id, set_keypad, icons Server-->>-Client: signup_session_id, set_keypad, icons
Note left of Server: signup_session_id:<br/>{{ signup_session_id }} Note left of Server: signup_session_id:<br/>{{ signup_session_id }}
Note left of Server: set_keypad:<br/>{{set_keypad}} Note left of Server: set_keypad:<br/>{{set_keypad}}
Note left of Server: Icons:<br/>{{icon_matrix}} Note left of Server: Icons:<br/>{{keypad_icons}}
Client->>Client: Order Icons by keypad Client->>Client: Order Icons by keypad
Client->>User: Display Keypad Client->>User: Display Keypad
Note left of Client: {{ ordered_keypad }} Note left of Client: {{ ordered_keypad }}
@@ -22,7 +22,7 @@ sequenceDiagram
User->>Client: Set Key Selection: {{ selected_keys_set }} User->>Client: Set Key Selection: {{ selected_keys_set }}
Client->>+Server: Set nKode:<br/>{{ signup_session_id }}<br/>{{ selected_keys_set }} Client->>+Server: Set nKode:<br/>{{ signup_session_id }}<br/>{{ selected_keys_set }}
Server->>Server: Disperse Set Keypad Server->>Server: Disperse Set Keypad
Note over User,Client: Confirm nKode Note over User,Server: Confirm nKode
Server-->>-Client: signup_session_id, confirm_keypad, icons Server-->>-Client: signup_session_id, confirm_keypad, icons
Note left of Server: signup_session_id:<br/>{{ signup_session_id }} Note left of Server: signup_session_id:<br/>{{ signup_session_id }}
Note left of Server: confirm_keypad:<br/>{{confirm_keypad}} Note left of Server: confirm_keypad:<br/>{{confirm_keypad}}
@@ -33,5 +33,5 @@ sequenceDiagram
User->>Client: Key Selection: {{ confirm_key_selection }} User->>Client: Key Selection: {{ confirm_key_selection }}
Client->>+Server: Confirm nKode:<br/>{{ signup_session_id }}<br/>{{ confirm_key_selection }} Client->>+Server: Confirm nKode:<br/>{{ signup_session_id }}<br/>{{ confirm_key_selection }}
Server->>Server: Create User Server->>Server: Create User
Server-->-Client: Success Server-->>-Client: Success
``` ```

22
docs/login_diagram.md Normal file
View File

@@ -0,0 +1,22 @@
# nKode Login
```mermaid
sequenceDiagram
participant User
participant Client
participant Server
Note over User,Server: Login
Client->>User: Login Form
Note left of User: email: user@example.com
User->>Server: Submit Email
Server->>Client: login_keypad, icons
Note left of Server: Login Keypad:<br/>Key 0: [18 7 20 27 22 23]<br/>Key 1: [12 13 8 3 28 29]<br/>Key 2: [24 25 26 9 16 5]<br/>Key 3: [ 6 19 2 21 10 11]<br/>Key 4: [ 0 1 14 15 4 17]<br/>
Note left of Server: Icons:<br/>[😀,😂,🥳,😍,🤓<br/>😎,🥺,😡,😱,🤯<br/>🥰,😴,🤔,🙃,😇<br/>🤖,👽,👾,🐱,🐶<br/>🦁,🐻,🐸,🐙,🦄<br/>🌟,⚡,🔥,🍕,🎉]
Client->>Client: Order Icons
Client->>User: Display Keypad
Note left of Client: Key 0: ['🐱' '😡' '🦁' '🔥' '🐸' '🐙']<br/>Key 1: ['🤔' '🙃' '😱' '😍' '🍕' '🎉']<br/>Key 2: ['🦄' '🌟' '⚡' '🤯' '👽' '😎']<br/>Key 3: ['🥺' '🐶' '🥳' '🐻' '🥰' '😴']<br/>Key 4: ['😀' '😂' '😇' '🤖' '🤓' '👾']<br/>
Note left of User: User passcode icons: ['🐱' '🥳' '🐶' '⚡']
User->>Client: Selected Keys<br/>[0, 3, 3, 2]
Client->>Server: Login:<br/>email: user@example.com<br/>selected_keys: [0, 3, 3, 2]
Server-->>Client: Success
```

View File

@@ -0,0 +1,22 @@
# nKode Login
```mermaid
sequenceDiagram
participant User
participant Client
participant Server
Note over User,Server: Login
Client->>User: Login Form
Note left of User: email: {{ email }}
User->>Server: Submit Email
Server->>Client: login_keypad, icons
Note left of Server: Login Keypad:<br/>{{ login_keypad }}
Note left of Server: Icons:<br/>{{ keypad_icons }}
Client->>Client: Order Icons
Client->>User: Display Keypad
Note left of Client: {{ ordered_login_icons }}
Note left of User: User passcode icons: {{ passcode_user_icons }}
User->>Client: Selected Keys<br/>{{selected_keys_login}}
Client->>Server: Login:<br/>email: {{email}}<br/>selected_keys: {{selected_keys_login}}
Server-->>Client: Success
```

View File

@@ -47,9 +47,9 @@ def display_icons(icons_array: np.ndarray, kp: KeypadSize) -> str:
icons += "]" icons += "]"
return icons return icons
def display_icons_keypad(icons_array: np.ndarray, kp: KeypadSize) -> str: def display_icons_keypad(icons_array: np.ndarray, props_per_key: int) -> str:
icons = "" icons = ""
for idx, row in enumerate(icons_array.reshape(-1, kp.numb_of_keys)): for idx, row in enumerate(icons_array.reshape(-1, props_per_key)):
icons += f"Key {idx}: " icons += f"Key {idx}: "
icons += str(row) icons += str(row)
icons += "<br/>" icons += "<br/>"
@@ -93,15 +93,27 @@ if __name__ == "__main__":
context = { context = {
"email": "user@example.com", "email": "user@example.com",
"signup_session_id": signup_session_id, "signup_session_id": signup_session_id,
"set_keypad": display_icons_keypad(set_signup_keypad.reshape(-1, keypad_size.numb_of_keys), keypad_size), "set_keypad": display_icons_keypad(set_signup_keypad.reshape(-1, keypad_size.numb_of_keys), keypad_size.numb_of_keys),
"icon_matrix": display_icons(user_icons, keypad_size), "keypad_icons": display_icons(user_icons, keypad_size),
"ordered_keypad": display_icons_keypad(ordered_set_icons, keypad_size), "ordered_keypad": display_icons_keypad(ordered_set_icons, keypad_size.numb_of_keys),
"passcode_user_icons": str(user_icons[passcode_property_indices]), "passcode_user_icons": str(user_icons[passcode_property_indices]),
"selected_keys_set": str(selected_keys_set), "selected_keys_set": str(selected_keys_set),
"confirm_keypad": display_icons_keypad(confirm_keypad.reshape(-1, keypad_size.numb_of_keys), keypad_size), "confirm_keypad": display_icons_keypad(confirm_keypad.reshape(-1, keypad_size.numb_of_keys), keypad_size.numb_of_keys),
"confirm_ordered_keypad": display_icons_keypad(ordered_confirm_icons.reshape(-1, keypad_size.numb_of_keys), keypad_size), "confirm_ordered_keypad": display_icons_keypad(ordered_confirm_icons.reshape(-1, keypad_size.numb_of_keys), keypad_size.numb_of_keys),
"confirm_key_selection": selected_keys_confirm "confirm_key_selection": selected_keys_confirm
} }
# Render the template
render_markdown_template(Path("./enrollment_diagram.template.md"), Path("./enrollment_diagram.md"), context) render_markdown_template(Path("./enrollment_diagram.template.md"), Path("./enrollment_diagram.md"), context)
login_keypad = api.get_login_keypad(username, customer_id)
selected_keys_login = select_keys_with_passcode_values(passcode_property_indices, login_keypad,
keypad_size.props_per_key)
ordered_login_keypad = user_icons[login_keypad]
context = {
"email": "user@example.com",
"keypad_icons": display_icons(user_icons, keypad_size),
"login_keypad": display_icons_keypad(login_keypad.reshape(-1, keypad_size.props_per_key), keypad_size.props_per_key),
"ordered_login_icons": display_icons_keypad(ordered_login_keypad.reshape(-1, keypad_size.props_per_key),keypad_size.props_per_key),
"passcode_user_icons": str(user_icons[passcode_property_indices]),
"selected_keys_login": str(selected_keys_login)
}
api.login(customer_id, username, selected_keys_login)
render_markdown_template(Path("./login_diagram.template.md"), Path("./login_diagram.md"), context)