mirror of
https://github.com/andwati/zitadel.git
synced 2026-11-04 13:22:16 +00:00
* feat: add/ remove external idps * feat: external idp add /remove * fix: auth proto * fix: handle login * feat: loginpolicy on authrequest * feat: idp providers on login * feat: link external idp * fix: check login policy on check username * feat: add mapping fields for idp config * feat: use user org id if existing * feat: use user org id if existing * feat: register external user * feat: register external user * feat: user linking * feat: user linking * feat: design external login * feat: design external login * fix: tests * fix: regenerate login design * feat: next step test linking process * feat: next step test linking process * feat: cascade remove external idps on user * fix: tests * fix: tests * feat: external idp requsts on users * fix: generate protos * feat: login styles * feat: login styles * fix: link user * fix: register user on specifig org * fix: user linking * fix: register external, linking auto * fix: remove unnecessary request from proto * fix: tests * fix: new oidc package * fix: migration version * fix: policy permissions * Update internal/ui/login/static/i18n/en.yaml Co-authored-by: Livio Amstutz <[email protected]> * Update internal/ui/login/static/i18n/en.yaml Co-authored-by: Livio Amstutz <[email protected]> * Update internal/ui/login/handler/renderer.go Co-authored-by: Livio Amstutz <[email protected]> * Update internal/ui/login/handler/renderer.go Co-authored-by: Livio Amstutz <[email protected]> * fix: pr requests * Update internal/ui/login/handler/link_users_handler.go Co-authored-by: Livio Amstutz <[email protected]> * fix: pr requests * fix: pr requests * fix: pr requests * fix: login name size * fix: profile image light * fix: colors * fix: pr requests * fix: remove redirect uri validator * fix: remove redirect uri validator Co-authored-by: Livio Amstutz <[email protected]>
601 lines
16 KiB
CSS
601 lines
16 KiB
CSS
@font-face {
|
|
font-family: Aileron;
|
|
src: url(../../../fonts/ailerons/ailerons.otf) format("opentype");
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-Thin.ttf) format("truetype");
|
|
font-style: normal;
|
|
font-weight: 100;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-ThinItalic.ttf) format("truetype");
|
|
font-style: italic;
|
|
font-weight: 100;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-Light.ttf) format("truetype");
|
|
font-style: normal;
|
|
font-weight: 200;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-LightItalic.ttf) format("truetype");
|
|
font-style: italic;
|
|
font-weight: 200;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-Regular.ttf) format("truetype");
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-Italic.ttf) format("truetype");
|
|
font-style: italic;
|
|
font-weight: 400;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-Bold.ttf) format("truetype");
|
|
font-style: normal;
|
|
font-weight: 700;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-BoldItalic.ttf) format("truetype");
|
|
font-style: italic;
|
|
font-weight: 700;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-Black.ttf) format("truetype");
|
|
font-style: normal;
|
|
font-weight: 800;
|
|
}
|
|
@font-face {
|
|
font-family: Lato;
|
|
src: url(../../../fonts/lato/Lato-BlackItalic.ttf) format("truetype");
|
|
font-style: italic;
|
|
font-weight: 800;
|
|
}
|
|
@font-face {
|
|
font-family: "Material Icons";
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
src: url(../../../fonts/material/MaterialIcons-Regular.eot);
|
|
/* For IE6-8 */
|
|
src: local("Material Icons"), local("MaterialIcons-Regular"), url(../../../fonts/material/MaterialIcons-Regular.woff2) format("woff2"), url(../../../fonts/material/MaterialIcons-Regular.woff) format("woff"), url(../../../fonts/material/MaterialIcons-Regular.ttf) format("truetype");
|
|
}
|
|
*, *::before, *::after {
|
|
box-sizing: border-box;
|
|
font-family: Lato;
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
}
|
|
|
|
body {
|
|
margin: 0 0 100px 0;
|
|
}
|
|
|
|
html {
|
|
width: 100%;
|
|
min-height: 100%;
|
|
font-weight: 300;
|
|
background-color: #282828;
|
|
color: white;
|
|
background-repeat: no-repeat;
|
|
background-position: bottom right;
|
|
background-size: contain;
|
|
}
|
|
|
|
h1 {
|
|
color: white;
|
|
font-family: Aileron;
|
|
font-weight: 300;
|
|
font-size: 40px;
|
|
text-align: center;
|
|
}
|
|
|
|
h2 {
|
|
color: white;
|
|
font-family: Aileron;
|
|
font-weight: 300;
|
|
font-size: 30px;
|
|
}
|
|
|
|
p {
|
|
font-weight: 300;
|
|
text-align: center;
|
|
}
|
|
|
|
header {
|
|
padding: 8px;
|
|
}
|
|
header .logo {
|
|
background-image: url("../logo-dark.png");
|
|
background-repeat: no-repeat;
|
|
background-size: contain;
|
|
height: 80px;
|
|
margin: 30px;
|
|
}
|
|
|
|
.head {
|
|
width: 100%;
|
|
max-width: 1000px;
|
|
margin: auto;
|
|
}
|
|
|
|
.content form {
|
|
margin: auto;
|
|
padding: 20px;
|
|
width: 100%;
|
|
max-width: 500px;
|
|
}
|
|
|
|
a {
|
|
color: #760038;
|
|
text-decoration: none;
|
|
font-weight: 400;
|
|
}
|
|
a:hover {
|
|
color: #f60075;
|
|
}
|
|
a.tos-link {
|
|
font-size: 14px;
|
|
}
|
|
|
|
button, .button {
|
|
background-color: #282828;
|
|
color: #760038;
|
|
border: 1px solid #760038;
|
|
border-radius: 5px;
|
|
width: 100%;
|
|
max-width: 600px;
|
|
height: 50px;
|
|
transition: all 0.3s ease 0s;
|
|
cursor: pointer;
|
|
outline: none;
|
|
display: inline-block;
|
|
text-align: center;
|
|
line-height: 40px;
|
|
}
|
|
button:hover, .button:hover {
|
|
background-color: #f60075;
|
|
color: #282828;
|
|
border: 1px solid #f60075;
|
|
}
|
|
button.primary, .button.primary {
|
|
background-color: #760038;
|
|
color: white;
|
|
border: none;
|
|
}
|
|
button.primary:hover, .button.primary:hover {
|
|
background-color: #f60075;
|
|
}
|
|
button:disabled, .button:disabled {
|
|
background-color: #999999;
|
|
border: 1px solid #999999;
|
|
}
|
|
button:disabled:hover, .button:disabled:hover {
|
|
background-color: #999999;
|
|
border: 1px solid #999999;
|
|
}
|
|
|
|
input:not([type=radio]), select {
|
|
background-color: #252525;
|
|
color: white;
|
|
height: 50px;
|
|
border: 1px solid #999999;
|
|
border-radius: 5px;
|
|
padding-left: 8px;
|
|
}
|
|
|
|
form button.user-selection .profile-image, .login-profile .profile-image {
|
|
height: 80px;
|
|
width: 80px;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-image: url("../../../images/icon-user-dark.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
form button.user-selection .profile-image, .login-profile .profile-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 80px;
|
|
}
|
|
}
|
|
form button.user-selection:hover .profile-image, .login-profile:hover .profile-image {
|
|
background-image: url("../../../images/icon-user-dark-hover.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
form button.user-selection:hover .profile-image, .login-profile:hover .profile-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 80px;
|
|
}
|
|
}
|
|
|
|
.login-profile .profile-image {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
.login-profile .names {
|
|
padding: 10px 0;
|
|
text-align: center;
|
|
}
|
|
.login-profile .names div:first-of-type {
|
|
font-size: 26px;
|
|
font-weight: 300;
|
|
}
|
|
.login-profile .names div:nth-of-type(2) {
|
|
font-weight: 300;
|
|
font-size: 0.9rem;
|
|
font-style: italic;
|
|
color: #898989;
|
|
}
|
|
|
|
form .field {
|
|
display: grid;
|
|
padding: 10px 0;
|
|
}
|
|
form .field.radio-button {
|
|
display: flex;
|
|
}
|
|
form .field.radio-button input[type=radio] {
|
|
height: 20px;
|
|
vertical-align: middle;
|
|
}
|
|
form .field.radio-button label {
|
|
height: 20px;
|
|
display: inline-block;
|
|
padding: 3px 0 0 15px;
|
|
width: 100%;
|
|
}
|
|
form .field.check-box {
|
|
display: flex;
|
|
}
|
|
form .field.check-box input[type=checkbox] {
|
|
height: 16px;
|
|
vertical-align: middle;
|
|
}
|
|
form .field.check-box label {
|
|
height: 16px;
|
|
text-transform: inherit;
|
|
display: inline-block;
|
|
padding: 2px 0 0 15px;
|
|
width: 100%;
|
|
color: white;
|
|
}
|
|
form label {
|
|
color: #898989;
|
|
text-transform: uppercase;
|
|
font-size: 0.8rem;
|
|
margin-bottom: 3px;
|
|
}
|
|
form label span.optional {
|
|
font-style: italic;
|
|
text-transform: none;
|
|
}
|
|
form .actions {
|
|
padding: 20px 0;
|
|
}
|
|
form .actions .right {
|
|
float: right;
|
|
}
|
|
form .actions button, form .actions a {
|
|
margin: 10px 0;
|
|
}
|
|
form button.clean {
|
|
border: none;
|
|
height: auto;
|
|
color: white;
|
|
text-align: left;
|
|
text-transform: unset;
|
|
display: flex;
|
|
padding: 15px;
|
|
}
|
|
form button.clean:hover {
|
|
border: none;
|
|
background-color: #252525;
|
|
}
|
|
form button.clean * {
|
|
font-weight: 300;
|
|
}
|
|
form .user-selection-list {
|
|
margin-bottom: 40px;
|
|
}
|
|
form button.user-selection .profile-image {
|
|
height: 80px;
|
|
width: 80px;
|
|
}
|
|
form button.user-selection .sessionstate {
|
|
display: inline-block;
|
|
height: 20px;
|
|
width: 20px;
|
|
border-radius: 20px;
|
|
border-color: #999999;
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
position: absolute;
|
|
bottom: 0px;
|
|
right: 10px;
|
|
}
|
|
form button.user-selection .sessionstate.sessionstate-0 {
|
|
background-color: #138D00;
|
|
}
|
|
form button.user-selection .sessionstate.sessionstate-1 {
|
|
background-color: #BC372E;
|
|
}
|
|
form button.user-selection > div {
|
|
position: relative;
|
|
}
|
|
form button.user-selection > div.names {
|
|
margin: 15px;
|
|
}
|
|
form button.user-selection > div.names .displayname {
|
|
font-size: 1.4rem;
|
|
}
|
|
form button.user-selection > div.names .loginname {
|
|
color: #898989;
|
|
}
|
|
.user-selection + form button.other-user {
|
|
margin-top: 80px;
|
|
}
|
|
form button.other-user .other-user-image {
|
|
width: 80px;
|
|
height: 60px;
|
|
background-repeat: no-repeat;
|
|
background-position: center;
|
|
background-image: url("../../../images/icon-newuser-dark.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
form button.other-user .other-user-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 60px;
|
|
}
|
|
}
|
|
form button.other-user:hover .other-user-image {
|
|
background-repeat: no-repeat;
|
|
background-position: center;
|
|
background-image: url("../../../images/icon-newuser-dark-hover.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
form button.other-user:hover .other-user-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 60px;
|
|
}
|
|
}
|
|
form button.other-user > div:nth-of-type(2) {
|
|
margin: 15px;
|
|
font-size: 1.4rem;
|
|
}
|
|
form ul#passwordcomplexity {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
padding: 0;
|
|
list-style: none;
|
|
margin-bottom: 0;
|
|
}
|
|
form ul#passwordcomplexity li {
|
|
flex: 1 0 50%;
|
|
display: block;
|
|
font-weight: 300;
|
|
font-size: 12px;
|
|
line-height: 12px;
|
|
}
|
|
form ul#passwordcomplexity li i {
|
|
height: 26px;
|
|
padding-right: 10px;
|
|
vertical-align: middle;
|
|
color: #0DF279;
|
|
}
|
|
form ul#passwordcomplexity li.invalid i {
|
|
color: #F20D6B;
|
|
}
|
|
form #loginname {
|
|
display: flex;
|
|
}
|
|
form #loginname .loginname-suffix {
|
|
padding-left: 5px;
|
|
line-height: 50px;
|
|
}
|
|
|
|
#copy-secret {
|
|
visibility: hidden;
|
|
position: absolute;
|
|
}
|
|
|
|
#qrcode {
|
|
text-align: center;
|
|
}
|
|
#qrcode svg rect.color {
|
|
fill: white;
|
|
}
|
|
#qrcode svg rect.bg-color {
|
|
fill: #282828;
|
|
}
|
|
|
|
#secret .copy {
|
|
float: right;
|
|
cursor: pointer;
|
|
}
|
|
|
|
footer {
|
|
background-image: url("../gradientdeco-full.svg");
|
|
width: 100%;
|
|
background-size: cover;
|
|
bottom: 0;
|
|
z-index: -1;
|
|
}
|
|
|
|
.material-icons {
|
|
font-family: "Material Icons";
|
|
font-weight: normal;
|
|
font-style: normal;
|
|
font-size: 24px;
|
|
/* Preferred icon size */
|
|
display: inline-block;
|
|
line-height: 1;
|
|
text-transform: none;
|
|
letter-spacing: normal;
|
|
word-wrap: normal;
|
|
white-space: nowrap;
|
|
direction: ltr;
|
|
/* Support for all WebKit browsers. */
|
|
-webkit-font-smoothing: antialiased;
|
|
/* Support for Safari and Chrome. */
|
|
text-rendering: optimizeLegibility;
|
|
/* Support for Firefox. */
|
|
-moz-osx-font-smoothing: grayscale;
|
|
/* Support for IE. */
|
|
font-feature-settings: "liga";
|
|
}
|
|
|
|
.free-tier {
|
|
border: 2px solid #F20D6B;
|
|
border-radius: 5px;
|
|
padding: 10px;
|
|
}
|
|
|
|
.error {
|
|
color: #F20D6B;
|
|
}
|
|
|
|
html {
|
|
background-color: white;
|
|
color: #282828;
|
|
}
|
|
html header .logo {
|
|
background-image: url("../logo-light.png");
|
|
}
|
|
html h1, html h2 {
|
|
color: #282828;
|
|
}
|
|
html button, html .button {
|
|
background-color: white;
|
|
color: #760038;
|
|
border: 1px solid #760038;
|
|
}
|
|
html button:hover, html .button:hover {
|
|
background-color: #f60075;
|
|
border: 1px solid #f60075;
|
|
color: #FFFFFF;
|
|
}
|
|
html button.primary, html .button.primary {
|
|
background-color: #760038;
|
|
color: #FFFFFF;
|
|
border: none;
|
|
box-shadow: 0px 10px 30px #760038;
|
|
}
|
|
html button.primary:hover, html .button.primary:hover {
|
|
background-color: #f60075;
|
|
}
|
|
html button:disabled, html .button:disabled {
|
|
background-color: #999999;
|
|
border: 1px solid #999999;
|
|
}
|
|
html button:disabled:hover, html .button:disabled:hover {
|
|
background-color: #999999;
|
|
border: 1px solid #999999;
|
|
}
|
|
html button.clean, html .button.clean {
|
|
color: #282828;
|
|
}
|
|
html button.clean:hover, html .button.clean:hover {
|
|
border: none;
|
|
background-color: #FFFFFF;
|
|
}
|
|
html button.user-selection .profile-image, html .button.user-selection .profile-image {
|
|
background-image: url("../../../images/icon-user-light.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
html button.user-selection .profile-image, html .button.user-selection .profile-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 80px;
|
|
}
|
|
}
|
|
html button.user-selection:hover, html .button.user-selection:hover {
|
|
background-color: #FFFFFF;
|
|
}
|
|
html button.user-selection:hover .profile-image, html .button.user-selection:hover .profile-image {
|
|
background-image: url("../../../images/icon-user-light-hover.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
html button.user-selection:hover .profile-image, html .button.user-selection:hover .profile-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 80px;
|
|
}
|
|
}
|
|
html button.other-user .other-user-image, html .button.other-user .other-user-image {
|
|
background-image: url("../../../images/icon-newuser-light.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
html button.other-user .other-user-image, html .button.other-user .other-user-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 60px;
|
|
}
|
|
}
|
|
html button.other-user:hover .other-user-image, html .button.other-user:hover .other-user-image {
|
|
background-image: url("../../../images/icon-newuser-light-hover.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
html button.other-user:hover .other-user-image, html .button.other-user:hover .other-user-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 60px;
|
|
}
|
|
}
|
|
html input:not([type=radio]), html select {
|
|
background-color: #FFFFFF;
|
|
color: #282828;
|
|
}
|
|
html #qrcode svg rect.color {
|
|
fill: #282828;
|
|
}
|
|
html #qrcode svg rect.bg-color {
|
|
fill: white;
|
|
}
|
|
html footer {
|
|
background-image: url("../gradientdeco-full.svg");
|
|
}
|
|
|
|
form .field.check-box label {
|
|
color: #282828;
|
|
}
|
|
form ul#passwordcomplexity li i {
|
|
color: #50CA3D;
|
|
}
|
|
form ul#passwordcomplexity li.invalid i {
|
|
color: #F20D6B;
|
|
}
|
|
|
|
.login-profile .profile-image, form button.user-selection .profile-image {
|
|
background-image: url("../../../images/icon-user-light.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
.login-profile .profile-image, form button.user-selection .profile-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 80px;
|
|
}
|
|
}
|
|
.login-profile:hover .profile-image, form button.user-selection:hover .profile-image {
|
|
background-image: url("../../../images/icon-user-light-hover.png");
|
|
}
|
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
|
|
.login-profile:hover .profile-image, form button.user-selection:hover .profile-image {
|
|
background-image: url("../../../images/[email protected]");
|
|
background-size: 80px 80px;
|
|
}
|
|
}
|
|
|
|
.free-tier {
|
|
border: 2px solid #F20D6B;
|
|
}
|
|
|
|
.error {
|
|
color: #F20D6B;
|
|
}
|
|
|
|
/*# sourceMappingURL=light.css.map */
|