summaryrefslogtreecommitdiff
path: root/doc/integration/mattermost/gitlab-mattermost.msc
blob: f6d4bf7aa68234be57456f8dc8b1431b2d7648fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
msc {
  # Use https://mscgen.js.org or mscgen to convert this into PNG
  hscale="1.5",
  wordwraparcs=on;

  user [ label="User", textbgcolor="blue", textcolor="white" ],
  mattermost [ label="Mattermost", textbgcolor="red", textcolor="white"],
  gitlab [ label="GitLab", textbgcolor="indigo", textcolor="white"];

  user=>mattermost [label="GET https://mm.domain.com"];
  mattermost note gitlab [label="Obtain access code", textcolor="green"];
  mattermost=>gitlab [label="GET https://gitlab.domain.com/oauth/authorize", textcolor="indigo"];
  gitlab rbox user [label="GitLab user logs in (if necessary)"];
  gitlab rbox gitlab [label="GitLab verifies client_id matches an OAuth application"];
  gitlab=>user [label="GitLab asks user to authorize Mattermost OAuth app"];
  user=>gitlab [label="User clicks 'Allow'"];
  gitlab rbox gitlab [label="GitLab verifies redirect_uri matches list of valid URLs"];
  gitlab=>user [label="302 Redirect: https://mm.domain.com/signup/gitlab/complete"];
  user=>mattermost [label="GET https://mm.domain.com/signup/gitlab/complete", textcolor="red"];
  mattermost note gitlab [label="Exchange access code for access token", textcolor="green"];
  mattermost=>gitlab [label="POST http://gitlab.domain.com/oauth/token", textcolor="indigo"];
  gitlab=>gitlab [label="Doorkeeper::TokensController#create"];
  gitlab=>mattermost [label="Access token", textcolor="red"];
  mattermost note gitlab [label="Mattermost looks up GitLab user", textcolor="green"];
  mattermost=>gitlab [label="GET https://gitlab.domain.com/api/v4/user", textcolor="indigo"];
  gitlab=>mattermost [label="User details", textcolor="red"];
  mattermost=>user [label="Mattermost/GitLab user ready"];
}