src/samples/3rdparty/fbauth.xu
# 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"];
};
}