Commits

Matt Hinze  committed 2a0ae2f

chapter 8 figures for mvc 4

  • Participants
  • Parent commits 82e325a

Comments (0)

Files changed (13)

File manuscript/figures/ch08/figure-8.1.png

Added
New image

File manuscript/figures/ch08/figure-8.1.svg

+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 figure-8.1.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11.6929in" height="8.26772in"
+		viewBox="0 0 841.89 595.276" xml:space="preserve" color-interpolation-filters="sRGB" class="st9">
+	<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false">
+		<v:userDefs>
+			<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(0):26"/>
+		</v:userDefs>
+	</v:documentProperties>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {visibility:visible}
+		.st2 {fill:#cdcdcd;fill-opacity:0.5;stroke:#cdcdcd;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.5;stroke-width:0.25}
+		.st3 {fill:url(#grad30-6);stroke:#404040;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
+		.st4 {fill:#000000;font-family:Calibri;font-size:0.666664em}
+		.st5 {font-size:1em}
+		.st6 {marker-end:url(#mrkr5-55);stroke:#404040;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+		.st7 {fill:#404040;fill-opacity:1;stroke:#404040;stroke-opacity:1;stroke-width:0.28409090909091}
+		.st8 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}
+		.st9 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Patterns_And_Gradients">
+		<linearGradient id="grad30-6" v:fillPattern="30" v:foreground="#f0f0f0" v:background="#ffffff" x1="0" y1="1" x2="0" y2="0">
+			<stop offset="0" style="stop-color:#f0f0f0;stop-opacity:1"/>
+			<stop offset="1" style="stop-color:#ffffff;stop-opacity:1"/>
+		</linearGradient>
+	</defs>
+	<defs id="Markers">
+		<g id="lend5">
+			<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr5-55" class="st7" v:arrowType="5" v:arrowSize="2" v:setback="6.16" refX="-6.16" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend5" transform="scale(-3.52,-3.52) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<v:userDefs>
+			<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+			<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			<v:ud v:nameU="msvThemeOrder" v:val="VT0(0):26"/>
+		</v:userDefs>
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+				v:shadowOffsetY="-8.50394"/>
+		<v:layer v:name="Flowchart" v:index="0"/>
+		<v:layer v:name="Connector" v:index="1"/>
+		<g id="shape1-1" v:mID="1" v:groupContext="shape" v:layerMember="0" transform="translate(361.417,-490.394)">
+			<title>Decision</title>
+			<desc>Current user authenticated?</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="43.2283" cy="564.094" width="72.05" height="46.7717"/>
+			<g id="shadow1-2" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<path d="M0 564.09 L43.23 532.91 L86.46 564.09 L43.23 595.28 L0 564.09 Z" class="st2"/>
+			</g>
+			<path d="M0 564.09 L43.23 532.91 L86.46 564.09 L43.23 595.28 L0 564.09 Z" class="st3"/>
+			<text x="22.82" y="561.69" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Current user <tspan
+						x="18.53" dy="1.2em" class="st5">authenticated</tspan>?</text>		</g>
+		<g id="shape2-9" v:mID="2" v:groupContext="shape" v:layerMember="0" transform="translate(531.496,-313.795)">
+			<title>Process</title>
+			<desc>User not authorized</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="35.4331" cy="574.016" width="70.87" height="42.5197"/>
+			<g id="shadow2-10" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<rect x="0" y="552.756" width="70.8661" height="42.5197" class="st2"/>
+			</g>
+			<rect x="0" y="552.756" width="70.8661" height="42.5197" class="st3"/>
+			<text x="3.01" y="576.42" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>User not authorized</text>		</g>
+		<g id="shape3-15" v:mID="3" v:groupContext="shape" v:layerMember="0" transform="translate(233.15,-393.165)">
+			<title>Decision.3</title>
+			<desc>Has a list of usernames been specified?</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="50.315" cy="565.087" width="83.86" height="45.2835"/>
+			<g id="shadow3-16" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<path d="M0 565.09 L50.31 534.9 L100.63 565.09 L50.31 595.28 L0 565.09 Z" class="st2"/>
+			</g>
+			<path d="M0 565.09 L50.31 534.9 L100.63 565.09 L50.31 595.28 L0 565.09 Z" class="st3"/>
+			<text x="12.92" y="562.69" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Has a list of usernames <tspan
+						x="24.88" dy="1.2em" class="st5">been specified</tspan>?</text>		</g>
+		<g id="shape4-22" v:mID="4" v:groupContext="shape" v:layerMember="0" transform="translate(344.587,-301.606)">
+			<title>Decision.4</title>
+			<desc>Is the current user’s name in the list?</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="52.2638" cy="561.827" width="87.11" height="50.1732"/>
+			<g id="shadow4-23" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<path d="M0 561.83 L52.26 528.38 L104.53 561.83 L52.26 595.28 L0 561.83 Z" class="st2"/>
+			</g>
+			<path d="M0 561.83 L52.26 528.38 L104.53 561.83 L52.26 595.28 L0 561.83 Z" class="st3"/>
+			<text x="19.92" y="559.43" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Is the current user’s <tspan
+						x="25.3" dy="1.2em" class="st5">name in the list</tspan>?</text>		</g>
+		<g id="shape5-29" v:mID="5" v:groupContext="shape" v:layerMember="0" transform="translate(226.772,-164.409)">
+			<title>Decision.5</title>
+			<desc>Has a list of roles been specified?</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="56.6929" cy="561.26" width="94.49" height="51.0236"/>
+			<g id="shadow5-30" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<path d="M0 561.26 L56.69 527.24 L113.39 561.26 L56.69 595.28 L0 561.26 Z" class="st2"/>
+			</g>
+			<path d="M0 561.26 L56.69 527.24 L113.39 561.26 L56.69 595.28 L0 561.26 Z" class="st3"/>
+			<text x="20.05" y="558.86" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Has a list of roles been <tspan
+						x="40.34" dy="1.2em" class="st5">specified</tspan>?</text>		</g>
+		<g id="shape6-36" v:mID="6" v:groupContext="shape" v:layerMember="0" transform="translate(248.031,-56.6929)">
+			<title>Process.6</title>
+			<desc>User is authorized</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="35.4331" cy="574.016" width="70.87" height="42.5197"/>
+			<g id="shadow6-37" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<rect x="0" y="552.756" width="70.8661" height="42.5197" class="st2"/>
+			</g>
+			<rect x="0" y="552.756" width="70.8661" height="42.5197" class="st3"/>
+			<text x="6.07" y="576.42" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>User is authorized</text>		</g>
+		<g id="shape14-42" v:mID="14" v:groupContext="shape" v:layerMember="0" transform="translate(425.197,-166.535)">
+			<title>Decision.14</title>
+			<desc>Is the user a member of one of the roles?</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
+						v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
+						v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+				<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0"/>
+				<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
+						v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
+						v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
+				<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(0.98425196850394):24"/>
+				<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.59055118110236):24"/>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="53.1496" cy="563.386" width="88.59" height="47.8346"/>
+			<g id="shadow14-43" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
+					transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
+				<path d="M0 563.39 L53.15 531.5 L106.3 563.39 L53.15 595.28 L0 563.39 Z" class="st2"/>
+			</g>
+			<path d="M0 563.39 L53.15 531.5 L106.3 563.39 L53.15 595.28 L0 563.39 Z" class="st3"/>
+			<text x="14.46" y="560.99" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Is the user a member of <tspan
+						x="25.64" dy="1.2em" class="st5">one of the roles</tspan>?</text>		</g>
+		<g id="shape9-49" v:mID="9" v:groupContext="shape" v:layerMember="1" transform="translate(531.496,-198.425)">
+			<title>Dynamic connector.9</title>
+			<desc>No</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="35.4331" cy="555.307" width="40" height="17.6036"/>
+			<path d="M0 595.28 L35.43 595.28 L35.43 486.07" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="30.7417" y="550.507" width="9.38287" height="9.59985" class="st8"/>
+			<text x="30.74" y="557.71" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>No</text>		</g>
+		<g id="shape10-58" v:mID="10" v:groupContext="shape" v:layerMember="1" transform="translate(449.114,-342.142)">
+			<title>Dynamic connector.10</title>
+			<desc>No</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="41.1909" cy="602.362" width="40" height="17.6036"/>
+			<path d="M0 602.36 L76.22 602.36" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="36.4996" y="597.562" width="9.38287" height="9.59985" class="st8"/>
+			<text x="36.5" y="604.76" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>No</text>		</g>
+		<g id="shape12-66" v:mID="12" v:groupContext="shape" v:layerMember="1" transform="translate(344.587,-335.055)">
+			<title>Dynamic connector.12</title>
+			<desc>Yes</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="-61.122" cy="616.022" width="40" height="17.6036"/>
+			<path d="M0 595.28 L-61.12 595.28 L-61.12 691.73" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="-66.6259" y="611.222" width="11.0078" height="9.59985" class="st8"/>
+			<text x="-66.63" y="618.42" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Yes</text>		</g>
+		<g id="shape13-74" v:mID="13" v:groupContext="shape" v:layerMember="1" transform="translate(447.874,-521.575)">
+			<title>Dynamic connector.13</title>
+			<desc>No</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="119.055" cy="618.378" width="40" height="17.6036"/>
+			<path d="M0 595.28 L119.06 595.28 L119.06 754.38" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="114.364" y="613.578" width="9.38287" height="9.59985" class="st8"/>
+			<text x="114.36" y="620.78" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>No</text>		</g>
+		<g id="shape15-82" v:mID="15" v:groupContext="shape" v:layerMember="1" transform="translate(361.417,-521.575)">
+			<title>Dynamic connector.15</title>
+			<desc>Yes</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="-72.9921" cy="595.276" width="40" height="17.6036"/>
+			<path d="M0 595.28 L-77.95 595.28 L-77.95 657.15" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="-78.4959" y="590.476" width="11.0078" height="9.59985" class="st8"/>
+			<text x="-78.5" y="597.68" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Yes</text>		</g>
+		<g id="shape17-90" v:mID="17" v:groupContext="shape" v:layerMember="1" transform="translate(333.78,-423.354)">
+			<title>Dynamic connector.17</title>
+			<desc>Yes</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="58.9606" cy="595.276" width="40" height="17.6036"/>
+			<path d="M0 595.28 L63.07 595.28 L63.07 643.97" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="53.4568" y="590.476" width="11.0078" height="9.59985" class="st8"/>
+			<text x="53.46" y="597.68" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Yes</text>		</g>
+		<g id="shape7-98" v:mID="7" v:groupContext="shape" v:layerMember="1" transform="translate(276.378,-164.409)">
+			<title>Dynamic connector</title>
+			<desc>No</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="7.08661" cy="627.874" width="40" height="17.6036"/>
+			<path d="M7.09 595.28 L7.09 654.31" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="2.39524" y="623.074" width="9.38287" height="9.59985" class="st8"/>
+			<text x="2.4" y="630.27" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>No</text>		</g>
+		<g id="shape8-106" v:mID="8" v:groupContext="shape" v:layerMember="1" transform="translate(340.157,-191.339)">
+			<title>Dynamic connector.8</title>
+			<desc>Yes</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="42.5197" cy="588.189" width="40" height="17.6036"/>
+			<path d="M0 588.19 L78.88 588.19" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="37.0159" y="583.389" width="11.0078" height="9.59985" class="st8"/>
+			<text x="37.02" y="590.59" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Yes</text>		</g>
+		<g id="shape11-114" v:mID="11" v:groupContext="shape" v:layerMember="1" transform="translate(478.346,-166.535)">
+			<title>Dynamic connector.11</title>
+			<desc>Yes</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="-35.4331" cy="683.858" width="40" height="17.6036"/>
+			<path d="M0 595.28 L0 683.86 L-153.29 683.86" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="-40.9369" y="679.059" width="11.0078" height="9.59985" class="st8"/>
+			<text x="-40.94" y="686.26" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Yes</text>		</g>
+		<g id="shape16-122" v:mID="16" v:groupContext="shape" v:layerMember="1" transform="translate(237.047,-423.354)">
+			<title>Dynamic connector.16</title>
+			<desc>No</desc>
+			<v:userDefs>
+				<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
+				<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+			<v:textRect cx="-31.5354" cy="704.551" width="40" height="17.6036"/>
+			<path d="M-3.9 595.28 L-31.54 595.28 L-31.54 820.2 L-16.44 820.2" class="st6"/>
+			<rect v:rectContext="textBkgnd" x="-36.2268" y="699.751" width="9.38287" height="9.59985" class="st8"/>
+			<text x="-36.23" y="706.95" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>No</text>		</g>
+	</g>
+</svg>

File manuscript/figures/ch08/figure-8.1.vsd

Binary file added.

File manuscript/figures/ch08/figure-8.2.png

Added
New image

File manuscript/figures/ch08/figure-8.3.png

Added
New image

File manuscript/figures/ch08/figure-8.4.png

Added
New image

File manuscript/figures/ch08/figure-8.5.png

Added
New image

File manuscript/figures/ch08/figure-8.6.png

Added
New image

File manuscript/figures/ch08/figure-8.7.png

Added
New image

File manuscript/figures/ch08/figure-8.8.png

Added
New image

File manuscript/figures/ch08/figure-8.9.png

Added
New image

File src4/Chapter 8/XSS/Target/Controllers/CommentController.cs

 			return View();
 		}
 
-		[ValidateInput(false)] //Input validation explicitly disabled.
+		[ValidateInput(true)] //Input validation explicitly disabled.
 		public ViewResult Save(CommentInput form)
 		{
 			return View(form);

File src4/Chapter 8/XSS/Target/Views/Comment/Save.cshtml

 
     Using the WebForm view engine, you'd need to ensure that you use <%: %> rather than <%= %> *@
 
-    <p>Html.Raw(@Model.Comment)</p>
-	@*Safe: <p>@Model.Comment</p>*@
+    @*<p>@Html.Raw(@Model.Comment)</p>*@
+	<p>@Model.Comment</p>