sverweij/mscgen_js

View on GitHub
src/samples/3rdparty/fbauth.xu

Summary

Maintainability
Test Coverage
# facebook authentication
# adopted from http://www.uml-diagrams.org/sequence-diagrams-examples.html#facebook-authentication
#
# Note: as this uses an inline expression ('alt')
#       which are available in xù, but not in mscgen
msc {
  wordwraparcs=on,
  hscale="0.85",
  watermark="序 sample: FaceBook auth";

  act [label="Actor", linecolor="darkgreen", textcolor="white", textbgcolor="darkgreen", arclinecolor="darkgreen", arctextcolor="darkgreen"],
  browser [label=":WebBrowser", linecolor="darkgreen", textcolor="white", textbgcolor="darkgreen", arclinecolor="darkgreen", arctextcolor="darkgreen"],
  app [label="Application", linecolor="maroon", textcolor="white", textbgcolor="maroon", arclinecolor="maroon", arctextcolor="maroon"],
  fbauth [label="Facebook Authorization Server", linecolor="#3a5795", textcolor="white", textbgcolor="#3a5795", arclinecolor="#3a5795", arctextcolor="#3a5795"],
  fbcont [label="Facebook Content Server", linecolor="#3a5795", textcolor="white", textbgcolor="#3a5795", arclinecolor="#3a5795", arctextcolor="#3a5795"];

  act => browser [label="get FB resource"];
  browser => app [label="request FB access"];
  app >> browser [label="<<http redirect>>"];
  browser => fbauth [label="authorize"];
  fbauth >> browser [label="permission form"];
  browser >> act [label="permission form"];

  act => browser [label="user permission"];
  browser => fbauth [label="process permission"];
  fbauth >> browser [label="<<http redirect>>"];

  act alt fbcont [label="permission granted", linecolor="grey", textcolor="black"] {
    browser => app [label="FB authorization code"];
    app => fbauth [label="FB authorization code"];
    fbauth >> app [label="access token"];
    app => fbcont [label="access FB user protected resource"];
    fbcont >> app [label="protected resource"];
    app >> browser [label="protected resource"];
    browser >> act [label="protected resource"];
    --- [label="no permission", linecolor="grey", textbgcolor="white", textcolor="black"];
    browser => app [label="no authorization"];
    app >> browser [label="FB resource not available"];
    browser >> act [label="FB resource not available"];
  };
}