github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/docs/diagrams/from-settings.gv (about)

     1  digraph move_from_settings {
     2  	graph [splines=true];
     3  	node [shape="box", fontname="lato", fontsize=11, margin=0.12, color="#297EF2", fontcolor="#32363F"];
     4  	edge [color="#32363F"];
     5  	ranksep=0.45; nodesep=1.5;
     6  
     7  	subgraph cluster_source {
     8  		label="Cozy source"; labeljust="l"; fontname="lato"; fontsize=12; margin=24; rankdir=TB;
     9  		s_settings [label="App settings"; shape="Mdiamond"]
    10  		s_start [label="Redirect to move.cozycloud.cc"]
    11  		s_token [label="Token for source"]
    12  		s_confirm [label="Send mail for confirmation"]
    13  		s_mail [label="Click on mail link"]
    14  		s_ready [label="Export ready"]
    15  		s_data [label="Send archive"]
    16  		s_unblock [label="Unblock the Cozy"]
    17  		s_fake_1, s_fake_2, s_fake_3, s_fake_4, s_fake_5, s_fake_6, s_fake_7, s_fake_8 [style="invis"]
    18  	}
    19  
    20  	subgraph cluster_move {
    21  		label="cozy-move"; labeljust="l"; fontname="lato"; fontsize=12; margin=24;
    22  		m_source [label="Get info for Cozy source"]
    23  		m_intro [label="Show intro"]
    24  		m_index_1 [label="Show summary"]
    25  		m_select [label="Has a Cozy?"]
    26  		m_edit [label="Ask Cozy URL"]
    27  		m_post [label="Redirect to Cozy"]
    28  		m_target [label="Get info for Cozy target"]
    29  		m_index_2 [label="Show summary"]
    30  		m_warning [label="Ask confirmation"]
    31  		m_confirm [label="Confirm"]
    32  	}
    33  
    34  	subgraph cluster_target {
    35  		label="Cozy target"; labeljust="l"; fontname="lato"; fontsize=12; margin=24;
    36  		t_register [label="Create an OAuth client"]
    37  		t_export [label="Ask password (and 2FA)"]
    38  		t_export_2 [label="Check password"]
    39  		t_token [label="Token for target"]
    40  		t_block [label="Block the Cozy"]
    41  		t_run [label="Start the moving"]
    42  		t_wait [label="Show waiting page"]
    43  		t_done [label="Send mail\nwhen finished"; shape="Msquare"]
    44  		t_fake_1, t_fake_2, t_fake_3, t_fake_4 [style="invis"]
    45  	}
    46  
    47  	// User
    48  	s_settings -> s_start [label="POST /move/initialize"]
    49  	s_start -> m_source [label="POST /initialize\ncozy_url code client_id client_secret"]
    50  	m_source -> m_intro [label="GET /"]
    51  	m_intro -> m_index_1 [label="GET /:locale/instances"]
    52  	m_index_1 -> m_select [label="GET /:locale/target/select"]
    53  	m_select -> m_edit [label="GET /:locale/target/edit"]
    54  	m_edit -> m_post [label="POST /target"]
    55  	m_post -> t_export [label="GET /auth/authorize/move"]
    56  	t_export -> t_export_2 [label="POST /auth/authorize/move"]
    57  	t_export_2 -> m_target [label="GET /callback/target\ncode"]
    58  	m_target -> m_index_2 [label="GET /:locale/instances"]
    59  	m_index_2 -> m_warning [label="(modal)"]
    60  	m_warning -> m_confirm [label="POST /instances"]
    61  	m_confirm -> s_confirm [label="POST /move/request"]
    62  	s_confirm -> s_mail [label="GET /move/go"]
    63  	s_mail -> t_wait [label="GET /move/importing"]
    64  
    65  	// Server to server
    66  	m_source -> s_token [label="POST /auth/access_token"; style="dashed"]
    67  	m_post -> t_register [label="POST /auth/register"; style="dashed"]
    68  	m_target -> t_token [label="POST /auth/access_token"; style="dashed"]
    69  	s_mail -> t_block [label="POST /move/importing"; style="dashed"]
    70  	s_mail -> s_ready [label="(prepare export)"]
    71  	s_ready -> t_run [label="POST /move/imports"; style="dashed"]
    72  	t_run -> s_data [label="GET /move/exports/data/:id"; style="dashed"]
    73  	t_run -> s_data [style="dashed"]
    74  	t_run -> s_data [style="dashed"]
    75  	t_run -> s_unblock [label="POST /move/finalize"; style="dashed"]
    76  	t_run -> t_done [label="(import done)"; style="dashed"]
    77  
    78  	// Hidden, just to preserve order between nodes inside clusters
    79  	s_start -> s_token [style="invis"]
    80  	s_token -> s_fake_1 -> s_fake_2 -> s_fake_3 -> s_fake_4 -> s_fake_5 -> s_fake_6 -> s_fake_7 -> s_fake_8 -> s_confirm [style="invis"]
    81  	m_post -> m_target [style="invis"]
    82  	t_register -> t_export [style="invis"]
    83  	t_export_2 -> t_token [style="invis"]
    84  	t_token -> t_fake_1 -> t_fake_2 -> t_fake_3 -> t_block [style="invis"]
    85  	t_block -> t_wait -> t_run -> t_fake_4 -> t_done [style="invis"]
    86  	s_ready -> s_data -> s_unblock [style="invis"]
    87  }