basic design
BIN
public/image/avatar.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
117
public/image/icynet-icon-analytics.svg
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 29.898235 29.898235"
|
||||||
|
height="29.898235mm"
|
||||||
|
width="29.898235mm">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<marker
|
||||||
|
style="overflow:visible;"
|
||||||
|
id="Arrow1Send"
|
||||||
|
refX="0.0"
|
||||||
|
refY="0.0"
|
||||||
|
orient="auto">
|
||||||
|
<path
|
||||||
|
transform="scale(0.2) rotate(180) translate(6,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#03a9f4;stroke-width:1pt;stroke-opacity:1;fill:#03a9f4;fill-opacity:1"
|
||||||
|
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||||
|
id="path856" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible;"
|
||||||
|
id="Arrow1Mend"
|
||||||
|
refX="0.0"
|
||||||
|
refY="0.0"
|
||||||
|
orient="auto">
|
||||||
|
<path
|
||||||
|
transform="scale(0.4) rotate(180) translate(10,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#03a9f4;stroke-width:1pt;stroke-opacity:1;fill:#03a9f4;fill-opacity:1"
|
||||||
|
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||||
|
id="path850" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible;"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
refX="0.0"
|
||||||
|
refY="0.0"
|
||||||
|
orient="auto">
|
||||||
|
<path
|
||||||
|
transform="scale(0.8) rotate(180) translate(12.5,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#03a9f4;stroke-width:1pt;stroke-opacity:1;fill:#03a9f4;fill-opacity:1"
|
||||||
|
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||||
|
id="path844" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
transform="translate(-1.2029979e-7,-0.00176382)"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00a1b5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal"
|
||||||
|
id="rect1083"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="1.5723678"
|
||||||
|
y="3.4147503"
|
||||||
|
transform="rotate(-3.5293181)" />
|
||||||
|
<rect
|
||||||
|
transform="rotate(-8.5307657)"
|
||||||
|
y="4.5749965"
|
||||||
|
x="0.13787289"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect815"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00e1fd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#6fefff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="rect817"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="2.5211489"
|
||||||
|
y="2.5227857"
|
||||||
|
transform="rotate(2.4309033e-4)" />
|
||||||
|
<path
|
||||||
|
clip-path="none"
|
||||||
|
id="path827"
|
||||||
|
d="m 10.375347,9.502362 8.447685,9.454613 4.277499,-12.1369222"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#03a9f4;stroke-width:1.876;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)" />
|
||||||
|
<path
|
||||||
|
id="path831"
|
||||||
|
d="M 10.375347,9.502362 6.5886091,23.968708"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#03a9f4;stroke-width:1.87612462;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<circle
|
||||||
|
r="2.1394424"
|
||||||
|
cy="9.6658792"
|
||||||
|
cx="10.358132"
|
||||||
|
id="path833"
|
||||||
|
style="fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:0.92037439;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
id="path833-3"
|
||||||
|
d="m 20.970232,18.802922 a 2.1394424,2.1394424 0 0 1 -2.139443,2.139442 2.1394424,2.1394424 0 0 1 -2.139442,-2.139442 2.1394424,2.1394424 0 0 1 2.139442,-2.139443 2.1394424,2.1394424 0 0 1 2.139443,2.139443 z"
|
||||||
|
style="opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:0.92037439;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<circle
|
||||||
|
r="2.1394424"
|
||||||
|
cy="23.691137"
|
||||||
|
cx="6.5025473"
|
||||||
|
id="path833-6"
|
||||||
|
style="fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:0.92037439;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.9 KiB |
134
public/image/icynet-icon-git.svg
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="29.898235mm"
|
||||||
|
height="29.898235mm"
|
||||||
|
viewBox="0 0 29.898235 29.898235"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||||
|
sodipodi:docname="icynet-icon-git.svg"
|
||||||
|
inkscape:export-filename="/home/diamond/IcyNetwork/IcyNet.eu/static/image/icynet-icon-large.png"
|
||||||
|
inkscape:export-xdpi="460.05008"
|
||||||
|
inkscape:export-ydpi="460.05008">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath877">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#6fefff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="rect879"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="2.5211489"
|
||||||
|
y="2.5227857"
|
||||||
|
transform="rotate(2.4309033e-4)" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.3312427"
|
||||||
|
inkscape:cx="28.418921"
|
||||||
|
inkscape:cy="80.641272"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1021"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="31"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
inkscape:snap-intersection-paths="true"
|
||||||
|
inkscape:snap-smooth-nodes="false"
|
||||||
|
inkscape:object-nodes="true" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-1.2029979e-7,-0.00176382)">
|
||||||
|
<rect
|
||||||
|
transform="rotate(-3.5293181)"
|
||||||
|
y="3.4147503"
|
||||||
|
x="1.5723678"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect1083"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00a1b5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00e1fd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal"
|
||||||
|
id="rect815"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="0.13787289"
|
||||||
|
y="4.5749965"
|
||||||
|
transform="rotate(-8.5307657)" />
|
||||||
|
<rect
|
||||||
|
transform="rotate(2.4309033e-4)"
|
||||||
|
y="2.5227857"
|
||||||
|
x="2.5211489"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect817"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#6fefff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#03a9f4;stroke-width:2.63730979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 5.0038362,0.64767494 6.6339828,6.39015866 8.36023,8.3602304"
|
||||||
|
id="path827"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
clip-path="url(#clipPath877)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#03a9f4;stroke-width:2.63730979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 11.637819,7.0378336 V 22.098787"
|
||||||
|
id="path831"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<circle
|
||||||
|
style="fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:1.29379058;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path833"
|
||||||
|
cx="11.637817"
|
||||||
|
cy="7.0378332"
|
||||||
|
r="3.0074615" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:1.29379058;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 24.135889,16.54294 a 3.0074614,3.0074614 0 0 1 -3.007462,3.007461 3.0074614,3.0074614 0 0 1 -3.007461,-3.007461 3.0074614,3.0074614 0 0 1 3.007461,-3.007462 3.0074614,3.0074614 0 0 1 3.007462,3.007462 z"
|
||||||
|
id="path833-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<circle
|
||||||
|
style="fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:1.29379058;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path833-6"
|
||||||
|
cx="11.637819"
|
||||||
|
cy="22.204615"
|
||||||
|
r="3.0074615" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.9 KiB |
BIN
public/image/icynet-icon-large.png
Normal file
After Width: | Height: | Size: 45 KiB |
103
public/image/icynet-icon-pleroma.svg
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="29.898235mm"
|
||||||
|
height="29.898235mm"
|
||||||
|
viewBox="0 0 29.898235 29.898235"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath877">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#6fefff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="rect879"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="2.5211489"
|
||||||
|
y="2.5227857"
|
||||||
|
transform="rotate(2.4309033e-4)" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-1.2029979e-7,-0.00176382)">
|
||||||
|
<rect
|
||||||
|
transform="rotate(-3.5293181)"
|
||||||
|
y="3.4147503"
|
||||||
|
x="1.5723678"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect1083"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00a1b5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00e1fd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal"
|
||||||
|
id="rect815"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="0.13787289"
|
||||||
|
y="4.5749965"
|
||||||
|
transform="rotate(-8.5307657)" />
|
||||||
|
<rect
|
||||||
|
transform="rotate(2.4309033e-4)"
|
||||||
|
y="2.5227857"
|
||||||
|
x="2.5211489"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect817"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#6fefff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||||
|
<g
|
||||||
|
transform="matrix(0.06114614,0,0,0.06114614,-0.73486692,-0.70252952)"
|
||||||
|
id="g4612"
|
||||||
|
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">
|
||||||
|
<path
|
||||||
|
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||||
|
d="M 235,89 V 423 H 152 V 115 l 26,-26 z"
|
||||||
|
id="path4495" />
|
||||||
|
<circle
|
||||||
|
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||||
|
id="path4497"
|
||||||
|
cy="115"
|
||||||
|
cx="178"
|
||||||
|
r="26" />
|
||||||
|
<circle
|
||||||
|
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||||
|
id="path4497-0"
|
||||||
|
cy="230"
|
||||||
|
cx="335"
|
||||||
|
r="26" />
|
||||||
|
<path
|
||||||
|
style="font-variation-settings:normal;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||||
|
d="M 277,256 V 89 l 84,3e-6 L 361.00002,230 335,256 Z"
|
||||||
|
id="path4516" />
|
||||||
|
<circle
|
||||||
|
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||||
|
id="path4497-0-6"
|
||||||
|
cy="397"
|
||||||
|
cx="335"
|
||||||
|
r="26" />
|
||||||
|
<path
|
||||||
|
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:4.88991;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||||
|
d="m 277,423 v -83 h 84 l 2e-5,57 L 335,423 Z"
|
||||||
|
id="path4516-5" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.6 KiB |
BIN
public/image/icynet-icon.png
Normal file
After Width: | Height: | Size: 18 KiB |
134
public/image/icynet-icon.svg
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="29.898235mm"
|
||||||
|
height="29.898235mm"
|
||||||
|
viewBox="0 0 29.898235 29.898235"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||||
|
sodipodi:docname="icynet-icon.svg"
|
||||||
|
inkscape:export-filename="/home/diamond/IcyNetwork/IcyNet.eu/static/image/icynet-icon-large.png"
|
||||||
|
inkscape:export-xdpi="460.05008"
|
||||||
|
inkscape:export-ydpi="460.05008">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter1378"
|
||||||
|
x="-0.024088247"
|
||||||
|
width="1.0481765"
|
||||||
|
y="-0.023912397"
|
||||||
|
height="1.0478248">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.19860895"
|
||||||
|
id="feGaussianBlur1380" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.6568543"
|
||||||
|
inkscape:cx="38.38993"
|
||||||
|
inkscape:cy="45.763944"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1011"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-1.2029979e-7,-0.00176382)">
|
||||||
|
<rect
|
||||||
|
transform="rotate(-3.5293181)"
|
||||||
|
y="3.4147503"
|
||||||
|
x="1.5723678"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect1083"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00a1b5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#00e1fd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;font-variant-east_asian:normal"
|
||||||
|
id="rect815"
|
||||||
|
width="24.856066"
|
||||||
|
height="24.856066"
|
||||||
|
x="0.13787289"
|
||||||
|
y="4.5749965"
|
||||||
|
transform="rotate(-8.5307657)" />
|
||||||
|
<rect
|
||||||
|
transform="rotate(2.4309033e-4)"
|
||||||
|
y="2.5227857"
|
||||||
|
x="2.5211489"
|
||||||
|
height="24.856066"
|
||||||
|
width="24.856066"
|
||||||
|
id="rect817"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#6fefff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:52.66549683px;line-height:0;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.61717373px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter1378)"
|
||||||
|
x="14.788064"
|
||||||
|
y="14.919127"
|
||||||
|
id="text1264"><tspan
|
||||||
|
id="tspan1260"
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="14.788064"
|
||||||
|
y="14.919127"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.16637421px;line-height:0;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold';text-align:center;text-anchor:middle;fill:#0059a0;fill-opacity:1;stroke-width:0.61717373px">ICY</tspan><tspan
|
||||||
|
id="tspan1262"
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="14.788064"
|
||||||
|
y="25.230335"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.05188179px;line-height:0;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold';text-align:center;text-anchor:middle;fill:#007104;fill-opacity:1;stroke-width:0.61717373px">net</tspan></text>
|
||||||
|
<text
|
||||||
|
id="text839"
|
||||||
|
y="14.615795"
|
||||||
|
x="14.558904"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:52.66549683px;line-height:0;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.61717373px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.16637421px;line-height:0;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold';text-align:center;text-anchor:middle;fill:#03a9f4;fill-opacity:1;stroke-width:0.61717373px"
|
||||||
|
y="14.615795"
|
||||||
|
x="14.558904"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1252">ICY</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.05188179px;line-height:0;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold';text-align:center;text-anchor:middle;fill:#00b300;fill-opacity:1;stroke-width:0.61717373px"
|
||||||
|
y="24.927004"
|
||||||
|
x="14.558904"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1258">net</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.1 KiB |
BIN
public/image/icynet-large.png
Normal file
After Width: | Height: | Size: 201 KiB |
BIN
public/image/icynet-small.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
public/image/icynet.ico
Normal file
After Width: | Height: | Size: 17 KiB |
152
public/image/icynet.svg
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="303.82721"
|
||||||
|
height="35.330757"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 80.387615 9.3479292"
|
||||||
|
id="svg3874">
|
||||||
|
<metadata
|
||||||
|
id="metadata3880">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs3878">
|
||||||
|
<filter
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter5033"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1.04"
|
||||||
|
height="1.0599999">
|
||||||
|
<feFlood
|
||||||
|
flood-opacity="1"
|
||||||
|
flood-color="rgb(0,89,160)"
|
||||||
|
result="flood"
|
||||||
|
id="feFlood5023" />
|
||||||
|
<feComposite
|
||||||
|
in="flood"
|
||||||
|
in2="SourceGraphic"
|
||||||
|
operator="in"
|
||||||
|
result="composite1"
|
||||||
|
id="feComposite5025" />
|
||||||
|
<feOffset
|
||||||
|
dx="0.4"
|
||||||
|
dy="0.4"
|
||||||
|
result="offset"
|
||||||
|
id="feOffset5029" />
|
||||||
|
<feGaussianBlur
|
||||||
|
in="offset"
|
||||||
|
stdDeviation="0.3"
|
||||||
|
result="blur"
|
||||||
|
id="feGaussianBlur5027" />
|
||||||
|
<feComposite
|
||||||
|
in="SourceGraphic"
|
||||||
|
in2="blur"
|
||||||
|
operator="over"
|
||||||
|
result="composite2"
|
||||||
|
id="feComposite5031" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter5045"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1.01"
|
||||||
|
height="1.0599999">
|
||||||
|
<feFlood
|
||||||
|
flood-opacity="1"
|
||||||
|
flood-color="rgb(0,113,4)"
|
||||||
|
result="flood"
|
||||||
|
id="feFlood5035" />
|
||||||
|
<feComposite
|
||||||
|
in="flood"
|
||||||
|
in2="SourceGraphic"
|
||||||
|
operator="in"
|
||||||
|
result="composite1"
|
||||||
|
id="feComposite5037" />
|
||||||
|
<feOffset
|
||||||
|
dx="0.4"
|
||||||
|
dy="0.4"
|
||||||
|
result="offset"
|
||||||
|
id="feOffset5041" />
|
||||||
|
<feGaussianBlur
|
||||||
|
in="offset"
|
||||||
|
stdDeviation="0.3"
|
||||||
|
result="blur"
|
||||||
|
id="feGaussianBlur5039" />
|
||||||
|
<feComposite
|
||||||
|
in="SourceGraphic"
|
||||||
|
in2="blur"
|
||||||
|
operator="over"
|
||||||
|
result="composite2"
|
||||||
|
id="feComposite5043" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<!--style>
|
||||||
|
text {
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 2px 2px 1px #007104;
|
||||||
|
color: #00b300;
|
||||||
|
user-select: none;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
#ts1 {
|
||||||
|
color: #03a9f4;
|
||||||
|
text-shadow: 2px 2px 1px #0059a0;
|
||||||
|
}
|
||||||
|
</style-->
|
||||||
|
<g
|
||||||
|
transform="translate(-50.340659,-159.82899)"
|
||||||
|
id="g3872"
|
||||||
|
style="filter:url(#filter5045)">
|
||||||
|
<text
|
||||||
|
x="69.641945"
|
||||||
|
y="168.53017"
|
||||||
|
xml:space="preserve"
|
||||||
|
id="text3870"><tspan
|
||||||
|
id="ts2"
|
||||||
|
x="69.641945"
|
||||||
|
y="168.53017"
|
||||||
|
style="color:#00b300;font-weight:bold;font-family:'Open Sans';text-align:center;text-transform:uppercase;fill:#00b300;fill-opacity:1">NETWORK</tspan></text>
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.11109924px;line-height:1.25;font-family:P052;-inkscape-font-specification:P052;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="16.607485"
|
||||||
|
y="2.4248574"
|
||||||
|
id="text4974"><tspan
|
||||||
|
id="tspan4972"
|
||||||
|
x="16.607485"
|
||||||
|
y="122.5104"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
<g
|
||||||
|
transform="translate(-82.121269,-160.8011)"
|
||||||
|
id="g3872-7">
|
||||||
|
<text
|
||||||
|
x="81.043144"
|
||||||
|
y="169.50345"
|
||||||
|
xml:space="preserve"
|
||||||
|
id="text3870-0"
|
||||||
|
style="fill:#03a9f4;fill-opacity:1;filter:url(#filter5033)"><tspan
|
||||||
|
id="ts2-3"
|
||||||
|
x="81.043144"
|
||||||
|
y="169.50345"
|
||||||
|
style="color:#00b300;font-weight:bold;font-family:'Open Sans';text-align:center;text-transform:uppercase;fill:#03a9f4;fill-opacity:1">ICY</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.2 KiB |
703
public/image/squeebot.svg
Normal file
After Width: | Height: | Size: 158 KiB |
@ -2,7 +2,6 @@ import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
|
|||||||
import { AppController } from './app.controller';
|
import { AppController } from './app.controller';
|
||||||
import { AppService } from './app.service';
|
import { AppService } from './app.service';
|
||||||
import { CSRFMiddleware } from './middleware/csrf.middleware';
|
import { CSRFMiddleware } from './middleware/csrf.middleware';
|
||||||
import { FlashMiddleware } from './middleware/flash.middleware';
|
|
||||||
import { LoginModule } from './modules/features/login/login.module';
|
import { LoginModule } from './modules/features/login/login.module';
|
||||||
import { OAuth2Module } from './modules/features/oauth2/oauth2.module';
|
import { OAuth2Module } from './modules/features/oauth2/oauth2.module';
|
||||||
import { RegisterModule } from './modules/features/register/register.module';
|
import { RegisterModule } from './modules/features/register/register.module';
|
||||||
@ -33,8 +32,5 @@ import { UtilityModule } from './modules/utility/utility.module';
|
|||||||
export class AppModule implements NestModule {
|
export class AppModule implements NestModule {
|
||||||
configure(consumer: MiddlewareConsumer) {
|
configure(consumer: MiddlewareConsumer) {
|
||||||
consumer.apply(CSRFMiddleware).forRoutes('*');
|
consumer.apply(CSRFMiddleware).forRoutes('*');
|
||||||
consumer
|
|
||||||
.apply(FlashMiddleware)
|
|
||||||
.forRoutes('login', 'register', 'login/verify', 'two-factor');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ export class LoginController {
|
|||||||
) {}
|
) {}
|
||||||
|
|
||||||
@Get()
|
@Get()
|
||||||
@Render('login')
|
@Render('login/login')
|
||||||
public loginView(
|
public loginView(
|
||||||
@Session() session: SessionData,
|
@Session() session: SessionData,
|
||||||
@Req() req: Request,
|
@Req() req: Request,
|
||||||
@ -92,7 +92,10 @@ export class LoginController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
res.render('totp-verify', this.formUtil.populateTemplate(req, session));
|
res.render(
|
||||||
|
'login/totp-verify',
|
||||||
|
this.formUtil.populateTemplate(req, session),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post('verify')
|
@Post('verify')
|
||||||
|
@ -4,6 +4,7 @@ import {
|
|||||||
NestModule,
|
NestModule,
|
||||||
RequestMethod,
|
RequestMethod,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
|
import { FlashMiddleware } from 'src/middleware/flash.middleware';
|
||||||
import { ValidateCSRFMiddleware } from 'src/middleware/validate-csrf.middleware';
|
import { ValidateCSRFMiddleware } from 'src/middleware/validate-csrf.middleware';
|
||||||
import { UserModule } from 'src/modules/objects/user/user.module';
|
import { UserModule } from 'src/modules/objects/user/user.module';
|
||||||
import { LoginController } from './login.controller';
|
import { LoginController } from './login.controller';
|
||||||
@ -17,5 +18,7 @@ export class LoginModule implements NestModule {
|
|||||||
consumer
|
consumer
|
||||||
.apply(ValidateCSRFMiddleware)
|
.apply(ValidateCSRFMiddleware)
|
||||||
.forRoutes({ path: '*', method: RequestMethod.POST });
|
.forRoutes({ path: '*', method: RequestMethod.POST });
|
||||||
|
|
||||||
|
consumer.apply(FlashMiddleware).forRoutes('*');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import {
|
|||||||
NestModule,
|
NestModule,
|
||||||
RequestMethod,
|
RequestMethod,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
|
import { FlashMiddleware } from 'src/middleware/flash.middleware';
|
||||||
import { ValidateCSRFMiddleware } from 'src/middleware/validate-csrf.middleware';
|
import { ValidateCSRFMiddleware } from 'src/middleware/validate-csrf.middleware';
|
||||||
import { UserModule } from 'src/modules/objects/user/user.module';
|
import { UserModule } from 'src/modules/objects/user/user.module';
|
||||||
import { RegisterController } from './register.controller';
|
import { RegisterController } from './register.controller';
|
||||||
@ -17,5 +18,7 @@ export class RegisterModule implements NestModule {
|
|||||||
consumer
|
consumer
|
||||||
.apply(ValidateCSRFMiddleware)
|
.apply(ValidateCSRFMiddleware)
|
||||||
.forRoutes({ path: '*', method: RequestMethod.POST });
|
.forRoutes({ path: '*', method: RequestMethod.POST });
|
||||||
|
|
||||||
|
consumer.apply(FlashMiddleware).forRoutes('*');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
|
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
|
||||||
import { AuthMiddleware } from 'src/middleware/auth.middleware';
|
import { AuthMiddleware } from 'src/middleware/auth.middleware';
|
||||||
|
import { FlashMiddleware } from 'src/middleware/flash.middleware';
|
||||||
import { UserModule } from 'src/modules/objects/user/user.module';
|
import { UserModule } from 'src/modules/objects/user/user.module';
|
||||||
import { TwoFactorController } from './twofactor.controller';
|
import { TwoFactorController } from './twofactor.controller';
|
||||||
|
|
||||||
@ -10,5 +11,6 @@ import { TwoFactorController } from './twofactor.controller';
|
|||||||
export class TwoFactorModule implements NestModule {
|
export class TwoFactorModule implements NestModule {
|
||||||
configure(consumer: MiddlewareConsumer) {
|
configure(consumer: MiddlewareConsumer) {
|
||||||
consumer.apply(AuthMiddleware).forRoutes('two-factor');
|
consumer.apply(AuthMiddleware).forRoutes('two-factor');
|
||||||
|
consumer.apply(FlashMiddleware).forRoutes('*');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
src/scss/_alert.scss
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.alert {
|
||||||
|
padding: 16px;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
&-danger {
|
||||||
|
background-color: #ff292999;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-success {
|
||||||
|
background-color: #12930099;
|
||||||
|
}
|
||||||
|
}
|
29
src/scss/_block.scss
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.wrapper {
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center-box {
|
||||||
|
max-width: 800px;
|
||||||
|
background-color: #2e6b81;
|
||||||
|
color: #fff;
|
||||||
|
margin: 2rem auto;
|
||||||
|
padding: 4rem;
|
||||||
|
|
||||||
|
box-shadow: 0px 6px 62px -14px rgba(0, 0, 0, 0.45);
|
||||||
|
-webkit-box-shadow: 0px 6px 62px -14px rgba(0, 0, 0, 0.45);
|
||||||
|
-moz-box-shadow: 0px 6px 62px -14px rgba(0, 0, 0, 0.45);
|
||||||
|
|
||||||
|
h1:first-of-type {
|
||||||
|
margin-top: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-container {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
37
src/scss/_button.scss
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
.btn {
|
||||||
|
padding: 12px 24px;
|
||||||
|
font-size: 1rem;
|
||||||
|
appearance: none;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: 0px solid #00c0ff8a;
|
||||||
|
|
||||||
|
min-width: 120px;
|
||||||
|
transition: background-color 0.35s linear, outline 0.15s linear;
|
||||||
|
|
||||||
|
&-link {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: #fff;
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
background-color: var(--btn-background);
|
||||||
|
color: var(--btn-color);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--btn-background-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 4px solid #00c0ff8a;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-primary {
|
||||||
|
--btn-background: #00c4ff;
|
||||||
|
--btn-background-hover: #3ed2ff;
|
||||||
|
--btn-color: #002d34;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
18
src/scss/_flex.scss
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
.align-self-end {
|
||||||
|
align-self: end;
|
||||||
|
}
|
||||||
|
.align-self-start {
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
.align-self-center {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
.d-flex {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.flex-column {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.flex-row {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
33
src/scss/_form.scss
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
.form-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
margin-top: 1rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.form-control {
|
||||||
|
padding: 8px;
|
||||||
|
font-size: 1rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid #707070;
|
||||||
|
|
||||||
|
transition: outline 0.15s linear;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 4px solid #00c0ff8a;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
border: 1px solid #5c5c5c;
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,9 @@
|
|||||||
|
@import 'block';
|
||||||
|
@import 'form';
|
||||||
|
@import 'button';
|
||||||
|
@import 'flex';
|
||||||
|
@import 'alert';
|
||||||
|
|
||||||
*,
|
*,
|
||||||
*::before,
|
*::before,
|
||||||
*::after {
|
*::after {
|
||||||
@ -6,8 +12,6 @@
|
|||||||
|
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
@ -15,4 +19,5 @@ body {
|
|||||||
body {
|
body {
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
|
||||||
Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
|
background-color: #314550;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,9 @@ block title
|
|||||||
|Icy Network
|
|Icy Network
|
||||||
|
|
||||||
block body
|
block body
|
||||||
h1 Hello world!
|
include partials/logo.pug
|
||||||
if user
|
div.container
|
||||||
h2 Logged in as #{ user.display_name }
|
div.center-box
|
||||||
|
h1 Hello, #{ user.display_name }!
|
||||||
|
p No pending authorization requests found.
|
||||||
|
p Have a good day!
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
extends partials/layout.pug
|
|
||||||
|
|
||||||
block title
|
|
||||||
|Icy Network | Log in
|
|
||||||
|
|
||||||
block body
|
|
||||||
h1 Log in
|
|
||||||
if message.text
|
|
||||||
if message.error
|
|
||||||
.alert.alert-danger
|
|
||||||
span #{message.text}
|
|
||||||
else
|
|
||||||
.alert.alert-success
|
|
||||||
span #{message.text}
|
|
||||||
|
|
||||||
form(method="post")
|
|
||||||
input#csrf(type="hidden", name="csrf", value=csrf)
|
|
||||||
input#username(type="text", name="username", placeholder="Username", value=form.username)
|
|
||||||
input#password(type="password", name="password", placeholder="Password")
|
|
||||||
button(type="submit") Log in
|
|
27
views/login/login.pug
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
extends ../partials/layout.pug
|
||||||
|
|
||||||
|
block title
|
||||||
|
|Icy Network | Log in
|
||||||
|
|
||||||
|
block body
|
||||||
|
include ../partials/logo.pug
|
||||||
|
div.container
|
||||||
|
div.center-box
|
||||||
|
h1 Log in
|
||||||
|
if message.text
|
||||||
|
if message.error
|
||||||
|
.alert.alert-danger
|
||||||
|
span #{message.text}
|
||||||
|
else
|
||||||
|
.alert.alert-success
|
||||||
|
span #{message.text}
|
||||||
|
|
||||||
|
form(method="post")
|
||||||
|
div.form-container
|
||||||
|
input#csrf(type="hidden", name="csrf", value=csrf)
|
||||||
|
label.form-label(for="username") Username
|
||||||
|
input.form-control#username(type="text", name="username", placeholder="Username", value=form.username)
|
||||||
|
label.form-label(for="password") Password
|
||||||
|
input.form-control#password(type="password", name="password", placeholder="Password")
|
||||||
|
button.btn.btn-primary(type="submit") Log in
|
||||||
|
a.btn.btn-link.align-self-end(type="button" href="/register") Create a new account
|
24
views/login/totp-verify.pug
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
extends ../partials/layout.pug
|
||||||
|
|
||||||
|
block title
|
||||||
|
|Icy Network | Veify two-factor
|
||||||
|
|
||||||
|
block body
|
||||||
|
include ../partials/logo.pug
|
||||||
|
div.container
|
||||||
|
div.center-box
|
||||||
|
h1 Verify two-factor authentication
|
||||||
|
if message.text
|
||||||
|
if message.error
|
||||||
|
.alert.alert-danger
|
||||||
|
span #{message.text}
|
||||||
|
else
|
||||||
|
.alert.alert-success
|
||||||
|
span #{message.text}
|
||||||
|
|
||||||
|
form(method="post")
|
||||||
|
div.form-container
|
||||||
|
input#csrf(type="hidden", name="csrf", value=csrf)
|
||||||
|
label.form-label(for="totp") Code
|
||||||
|
input.form-control#totp(type="text", name="totp", placeholder="xxxxxx")
|
||||||
|
button.btn.btn-primary(type="submit") Log in
|
@ -16,5 +16,6 @@ html(lang="en")
|
|||||||
link(rel="stylesheet", type="text/css", href="/public/css/index.css")
|
link(rel="stylesheet", type="text/css", href="/public/css/index.css")
|
||||||
title
|
title
|
||||||
block title
|
block title
|
||||||
body
|
body
|
||||||
block body
|
main.wrapper
|
||||||
|
block body
|
||||||
|
2
views/partials/logo.pug
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
div.logo-container
|
||||||
|
img(src="/public/image/icynet-icon.svg", alt="Icy Network")
|
@ -4,21 +4,30 @@ block title
|
|||||||
|Icy Network | Register
|
|Icy Network | Register
|
||||||
|
|
||||||
block body
|
block body
|
||||||
h1 Register
|
include partials/logo.pug
|
||||||
if message.text
|
div.container
|
||||||
if message.error
|
div.center-box
|
||||||
.alert.alert-danger
|
h1 Register
|
||||||
span #{message.text}
|
if message.text
|
||||||
else
|
if message.error
|
||||||
.alert.alert-success
|
.alert.alert-danger
|
||||||
span #{message.text}
|
span #{message.text}
|
||||||
|
else
|
||||||
|
.alert.alert-success
|
||||||
|
span #{message.text}
|
||||||
|
|
||||||
form(method="post")
|
form(method="post")
|
||||||
input#csrf(type="hidden", name="csrf", value=csrf)
|
div.form-container
|
||||||
input#username(type="text", name="username", placeholder="Username", value=form.username)
|
input#csrf(type="hidden", name="csrf", value=csrf)
|
||||||
input#display_name(type="text", name="display_name", placeholder="Display name", value=form.display_name)
|
label.form-label(for="username") Username
|
||||||
input#email(type="email", name="email", placeholder="Email address", value=form.email)
|
input.form-control#username(type="text", name="username", placeholder="Username", value=form.username)
|
||||||
input#password(type="password", name="password", placeholder="Password", value=form.password)
|
label.form-label(for="display_name") Display name
|
||||||
input#password_repeat(type="password", name="password_repeat", placeholder="Confirm password")
|
input.form-control#display_name(type="text", name="display_name", placeholder="Display name", value=form.display_name)
|
||||||
button(type="submit") Create a new account
|
label.form-label(for="email") Email address
|
||||||
a(type="button" href="/login") Log in
|
input.form-control#email(type="email", name="email", placeholder="Email address", value=form.email)
|
||||||
|
label.form-label(for="password") Password
|
||||||
|
input.form-control#password(type="password", name="password", placeholder="Password", value=form.password)
|
||||||
|
label.form-label(for="password_repeat") Confirm password
|
||||||
|
input.form-control#password_repeat(type="password", name="password_repeat", placeholder="Confirm password")
|
||||||
|
button.btn.btn-primary(type="submit") Create a new account
|
||||||
|
a.btn.btn-link.align-self-end(type="button" href="/login") Log in instead
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
extends partials/layout.pug
|
|
||||||
|
|
||||||
block title
|
|
||||||
|Icy Network | Veify two-factor
|
|
||||||
|
|
||||||
block body
|
|
||||||
h1 Verify two-factor authentication
|
|
||||||
if message.text
|
|
||||||
if message.error
|
|
||||||
.alert.alert-danger
|
|
||||||
span #{message.text}
|
|
||||||
else
|
|
||||||
.alert.alert-success
|
|
||||||
span #{message.text}
|
|
||||||
|
|
||||||
form(method="post")
|
|
||||||
input#csrf(type="hidden", name="csrf", value=csrf)
|
|
||||||
input#totp(type="text", name="totp", placeholder="Code")
|
|
||||||
button(type="submit") Log in
|
|
@ -4,18 +4,24 @@ block title
|
|||||||
|Icy Network | Two-factor authentication
|
|Icy Network | Two-factor authentication
|
||||||
|
|
||||||
block body
|
block body
|
||||||
h1 Activate two-factor authentication
|
include ../partials/logo.pug
|
||||||
if message.text
|
div.container
|
||||||
if message.error
|
div.center-box
|
||||||
.alert.alert-danger
|
h1 Activate two-factor authentication
|
||||||
span #{message.text}
|
if message.text
|
||||||
else
|
if message.error
|
||||||
.alert.alert-success
|
.alert.alert-danger
|
||||||
span #{message.text}
|
span #{message.text}
|
||||||
|
else
|
||||||
img(src=qrcode)
|
.alert.alert-success
|
||||||
|
span #{message.text}
|
||||||
|
|
||||||
|
div.qr-preview
|
||||||
|
img(src=qrcode)
|
||||||
|
|
||||||
form(method="post")
|
form(method="post")
|
||||||
input#csrf(type="hidden", name="csrf", value=csrf)
|
div.form-container
|
||||||
input#code(type="text", name="code", placeholder="Code from app")
|
input#csrf(type="hidden", name="csrf", value=csrf)
|
||||||
button(type="submit") Activate
|
label.form-label(for="code") Code from authenticator app
|
||||||
|
input.form-control#code(type="text", name="code", placeholder="xxxxxx")
|
||||||
|
button.btn.btn-primary(type="submit") Activate
|
||||||
|