diff --git a/java-admin-portal-example/src/main/jte/home.jte b/java-admin-portal-example/src/main/jte/home.jte index ed8b730..bdc34ef 100644 --- a/java-admin-portal-example/src/main/jte/home.jte +++ b/java-admin-portal-example/src/main/jte/home.jte @@ -2,41 +2,69 @@ - -
-
- workos logo + +
+
+
+ workos logo
- -

Java Admin Portal Example App

-
-
-
- -
-
- -
-
- +
+ +
+
+
+
+ +
+
+ Admin Portal Example +
+
+
+ +
+
+ +
+
+
+ +
-
- + +
+
\ No newline at end of file diff --git a/java-admin-portal-example/src/main/jte/provision.jte b/java-admin-portal-example/src/main/jte/provision.jte index 953c9b5..5162759 100644 --- a/java-admin-portal-example/src/main/jte/provision.jte +++ b/java-admin-portal-example/src/main/jte/provision.jte @@ -5,67 +5,80 @@ -
-
-
-

Your app,

-

Enterprise Ready

-
-
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

-
- -
-
-
-

Which Admin Portal would you like to launch?

- +
+
+
+

Which Admin Portal would you like to launch?

+
+ + + + + + + + + + + + + + + + + + + + + +
IntentCreate New Session
SSO + link to workos.com +
Directory Sync + link to workos.com +
Audit Logs + link to workos.com +
Log Streams + link to workos.com +
+
diff --git a/java-admin-portal-example/src/resources/images/icon-settings.svg b/java-admin-portal-example/src/resources/images/icon-settings.svg new file mode 100644 index 0000000..9717b95 --- /dev/null +++ b/java-admin-portal-example/src/resources/images/icon-settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/java-admin-portal-example/src/resources/main.css b/java-admin-portal-example/src/resources/main.css index 3b661ac..baadb40 100644 --- a/java-admin-portal-example/src/resources/main.css +++ b/java-admin-portal-example/src/resources/main.css @@ -1,261 +1,430 @@ body { - font-family: Inter, sans-serif; - background-color: #f9f9fb; - + font-family: Inter, sans-serif; + background-color: #f9f9fb; } .container_login { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 30%; - height: 90vh; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 30%; + height: 90vh; } .container_login img { - height: 150px; + height: 150px; } .container_login h1 { - font-size: 65px; - color: #111111; - position: relative; - bottom: 10px; + font-size: 65px; + color: #111111; + position: relative; + bottom: 10px; } .flex { - display: flex; - justify-content: center; + display: flex; + justify-content: center; + align-items: center; } .flex_column { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.space-between { - justify-content: space-between; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } -.width-75 { - width: 75%; +.m-top-20 { + margin-top: 20px; } -.width-40vw { - width: 40vw; +.space-between { + justify-content: space-between; } .container_success { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 100%; } .heading_div { - margin: 25px 0px 25px 0px; + margin: 35px 0px 0px 0px; } .heading_text_div { - align-self: center; + align-self: center; } .container_success { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 100%; - background-size: cover; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 100%; + background-size: cover; +} + +.text_input { + border: 1px solid #555555; + border-radius: 10px; + margin: 10px 0px 7px 0px; + padding: 5px; + height: 35px; + width: 18vw; + text-align: center; +} + +.code-input { + width: 75px; + height: 100px; + margin: 0px 5px 30px 5px; + font-size: 60px; + color: darkslategray; +} + +.qr_div { + align-self: center; + margin-top: 45px; +} + +.qr_code { + width: 7vw; + max-width: 100px; +} + +.factor_card { + border: 1px solid #555555; + border-radius: 10px; + width: 20vw; + margin: 0px 15px 0px 15px; + padding: 25px; +} + +.card { + border: 1px solid #555555; + border-radius: 10px; + margin: 0px 15px 0px 15px; + padding: 25px 50px; + margin-bottom: 20px; +} + +.profile_card { + width: 40vw; + overflow: scroll; + background: white; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .button { - background-color: #6363f1; - border: 2px solid #6363f1; - border-radius: 26px; - color: white; - padding: 8px 16px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - margin: 4px 2px; - transition-duration: 0.4s; - cursor: pointer; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + background-color: #6363f1; + border: 2px solid #6363f1; + border-radius: 10px; + color: white; + padding: 8px 16px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + transition-duration: 0.4s; + cursor: pointer; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .button-outline { - background-color: #f9f9fb; - color: #6363f1; - padding: 8px 16px; + background-color: #f9f9fb; + color: #6363f1; + padding: 8px 16px; +} + +.button-sm { + padding: 8px 16px; } .button:hover, .button-outline:hover { - background-color: #555555; - border: 2px solid #555555; - color: white; + background-color: #555555; + border: 2px solid #555555; + color: white; } .sales-button { - margin-left: 10px; + margin-left: 10px; } .login_button { - width: 95%; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + width: 100%; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + background-color: white; + color: ; +} + +.login_button:hover { + border-color: #6363f1; + color: #292929; } h2, h1 { - text-align: center; - color: #555555; + text-align: center; + color: #555555; } .logged_in_div_right { - width: 60%; - height: 90vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: relative; - bottom: 10%; - /* background-color: #f9f9fb; */ + width: 60%; + height: 90vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; + bottom: 10%; } .logged_in_div_left { - width: 40%; - height: 125vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: left; - background-color: #f9f9fb; - margin-left: 4vw; + width: 40%; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: left; + background-color: #f9f9fb; + margin-left: 4vw; } .logged_in_div_left div { - justify-content: left; - position: relative; - bottom: 20%; + justify-content: left; + position: relative; + bottom: 20%; } .logged_in_div_left h1 { - color: #111111; - font-size: 75px; - text-align: left; - margin-bottom: 0px; - font-weight: normal; - letter-spacing: -.05em; + color: #111111; + font-size: 75px; + text-align: left; + margin-bottom: 0px; + font-weight: normal; + letter-spacing: -0.05em; } .home-hero-gradient { - background-image: linear-gradient(45deg, #a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)); - background-size: 150% 100%; - background-repeat: no-repeat; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - animation: intro-gradient 1.2s cubic-bezier(0.85, 0.26, 0.89, 0.93); - animation-iteration-count: 1; - animation-fill-mode: backwards; - animation-delay: 0.4s; - text-align: left; - font-size: 75px; - letter-spacing: -.05em; - font-weight: normal; - margin-top: 0px; + background-image: linear-gradient( + 45deg, + #a163f1, + #6363f1 22%, + #3498ea 40%, + #40dfa3 67%, + rgba(64, 223, 163, 0) + ); + background-size: 150% 100%; + background-repeat: no-repeat; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + animation: intro-gradient 1.2s cubic-bezier(0.85, 0.26, 0.89, 0.93); + animation-iteration-count: 1; + animation-fill-mode: backwards; + animation-delay: 0.4s; + text-align: left; + font-size: 75px; + letter-spacing: -0.05em; + font-weight: normal; + margin-top: 0px; } .title-text { - margin-top: -50px; + margin-bottom: -50px; } .title-subtext { - color: gray; - line-height: 10px; - margin-bottom: 15px; - font-weight: 200; + color: gray; + line-height: 10px; + margin-bottom: 15px; + font-weight: 200; } .logged_in_div_left button { - padding: 8px 22px; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); -} - -div.text_box { - background-color: #f9f9fb; - width: 40vw; - max-height: 30vh; - padding: 10px; - word-wrap: break-word; - overflow: scroll; - border-width: 3px; - border-style: solid; - border-image: - linear-gradient(#a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)) 0 100%; + padding: 8px 22px; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .logged_in_nav { - display: flex; - justify-content: space-between; - background-color: #f9f9fb; - height: 60px; - padding: 15px 30px 15px 30px; - - z-index: 1000; + display: flex; + justify-content: space-between; + background-color: #f9f9fb; + height: 60px; + padding: 15px 30px 15px 30px; + z-index: 1000; + width: 95vw; } .logged_in_nav p { - padding: 4px 0px 0px 15px; - line-height: 1; - color: #29363d; + padding: 4px 0px 0px 15px; + line-height: 1; + color: #29363d; } .logged_in_nav img { - height: 50px; + height: 50px; } .nav-item { - color: black; - border: 2px solid #f9f9fb; - background-color: #f9f9fb; - box-shadow: none; - border-radius: 5px; + color: black; + border: 2px solid #f9f9fb; + background-color: #f9f9fb; + box-shadow: none; + border-radius: 5px; } .blog-nav-button { - margin-right: 20px; - background-color: #f9f9fb; - border: 2px solid #f9f9fb; + margin-right: 20px; + background-color: #f9f9fb; + border: 2px solid #f9f9fb; } .nav-item:hover { - background-color: #f9f9fb; - border: 2px solid #f9f9fb; - color: #a6a4a4; + background-color: #f9f9fb; + border: 2px solid #f9f9fb; + color: #a6a4a4; } -pre.prettyprint { - border: none !important; +.workos-logo { + position: relative; + top: 38px; + padding-right: 25px; + height: 75px !important; } -.text_input { - border: 1px solid #555555; - border-radius: 10px; - margin: 20px 0px 7px 0px; - padding: 5px; - height: 35px; - width: 18vw; - text-align: center; +.org-icon { + height: 15px; + width: 15px; + color: #f9f9fb; +} + +.webhooks_container { + width: 45vw; + padding: 25px; + max-height: 450px; + overflow-y: scroll; +} + +.mb-0 { + margin-bottom: 0px; +} + +.mb-20 { + margin-botton: 20px; +} + +.google_button { + background-image: url("./images/google-button.png"); + background-size: cover; +} + +.microsoft_button { + background-image: url("./images/microsoft-button.png"); + background-size: cover; +} + +.saml_button { + background-image: url("./images/saml-button.png"); + background-size: cover; +} + +.error_message { + color: #6363f1; + margin-top: 0px; + font-size: 12px; +} + +#noborder { + border: none; +} + +#noborder > :first-child { + display: none; +} + +tr { + text-align: center; + border-bottom: 1px solid #ebebf2; +} + +.ta-left { + text-align: left; +} + +tr:hover { + background-color: #ebebf2; +} + +table, +td { + padding: 5px 40px; +} + +table { + border-collapse: collapse; + border-radius: 5px; + overflow: hidden; + margin: 25px 0px; +} + +th { + text-align: center; + font-weight: bolder; + font-size: large; + background-color: #e3e3e3; + border-right: none; + border-left: none; + padding: 15px 40px; +} + +.width-75 { + width: 75%; +} + +.width-40vw { + width: 40vw; +} + +.width-25vw { + width: 25vw; +} + +.width-18vw { + width: 18vw; +} + +.width-65vw { + width: 50vw; +} + +.width-941px { + width: 941px; +} + +.width-335 { + width: 335px; +} + +.height-315 { + height: 315px; +} + +.height-40vh { + height: 40vw; +} + +.height-80vh { + height: 80vh; } -.text_input_2 { - margin-top: 0px; +.height-100vh { + height: 100vh; } diff --git a/java-directory-sync-example/src/main/jte/directories.jte b/java-directory-sync-example/src/main/jte/directories.jte index 41aad68..498ae72 100644 --- a/java-directory-sync-example/src/main/jte/directories.jte +++ b/java-directory-sync-example/src/main/jte/directories.jte @@ -9,27 +9,19 @@
-
-

Java Directory Sync Example App

-
diff --git a/java-directory-sync-example/src/main/jte/directoryGroup.jte b/java-directory-sync-example/src/main/jte/directoryGroup.jte index 18d8725..e1c419e 100644 --- a/java-directory-sync-example/src/main/jte/directoryGroup.jte +++ b/java-directory-sync-example/src/main/jte/directoryGroup.jte @@ -6,27 +6,19 @@
-
-

Java Directory Sync Example App

-
@@ -37,7 +29,7 @@ @if(hasError)
Error occurred fetching group
@endif -
+          
           ${directoryGroup}
         
diff --git a/java-directory-sync-example/src/main/jte/directoryGroups.jte b/java-directory-sync-example/src/main/jte/directoryGroups.jte index 9eddea6..b4ecb6f 100644 --- a/java-directory-sync-example/src/main/jte/directoryGroups.jte +++ b/java-directory-sync-example/src/main/jte/directoryGroups.jte @@ -26,7 +26,7 @@
- +
diff --git a/java-directory-sync-example/src/main/jte/directoryUser.jte b/java-directory-sync-example/src/main/jte/directoryUser.jte index 28bc0a2..9a79ca3 100644 --- a/java-directory-sync-example/src/main/jte/directoryUser.jte +++ b/java-directory-sync-example/src/main/jte/directoryUser.jte @@ -6,27 +6,19 @@
-
-

Java Directory Sync Example App

-
@@ -36,7 +28,7 @@ @if(hasError == true)
Error occurred fetching user
@endif -
+        
           ${directoryUser}
         
diff --git a/java-directory-sync-example/src/main/jte/directoryUsers.jte b/java-directory-sync-example/src/main/jte/directoryUsers.jte index fddb31a..f890896 100644 --- a/java-directory-sync-example/src/main/jte/directoryUsers.jte +++ b/java-directory-sync-example/src/main/jte/directoryUsers.jte @@ -27,8 +27,8 @@
-

Directory Users for ${directoryId}

-
Directory Group ID Directory Id
+

Directory: ${directoryId}

+
diff --git a/java-directory-sync-example/src/main/jte/home.jte b/java-directory-sync-example/src/main/jte/home.jte index 965d713..147e378 100644 --- a/java-directory-sync-example/src/main/jte/home.jte +++ b/java-directory-sync-example/src/main/jte/home.jte @@ -6,34 +6,25 @@ -
-
-

Java Directory Sync Example App

-
- - -
- -
-
- - link to workos.com - -
+
-

Select a Directory

+

Select an Organization

diff --git a/java-directory-sync-example/src/resources/main.css b/java-directory-sync-example/src/resources/main.css index b820b63..1042e91 100644 --- a/java-directory-sync-example/src/resources/main.css +++ b/java-directory-sync-example/src/resources/main.css @@ -233,16 +233,6 @@ div.text_box { padding: 10px; word-wrap: break-word; overflow: scroll; - border-width: 3px; - border-style: solid; - border-image: linear-gradient( - #a163f1, - #6363f1 22%, - #3498ea 40%, - #40dfa3 67%, - rgba(64, 223, 163, 0) - ) - 0 100%; } .logged_in_nav { @@ -386,3 +376,11 @@ th { border-left: none; padding: 15px 40px; } + +#noborder { + border: none; +} + +#noborder > :first-child { + display: none; +} diff --git a/java-magic-link-example/src/main/java/com/workos/java/examples/MagicLinkApp.java b/java-magic-link-example/src/main/java/com/workos/java/examples/MagicLinkApp.java index d302855..79b1ac4 100644 --- a/java-magic-link-example/src/main/java/com/workos/java/examples/MagicLinkApp.java +++ b/java-magic-link-example/src/main/java/com/workos/java/examples/MagicLinkApp.java @@ -52,9 +52,14 @@ private void sendMagicLink(Context ctx) { PasswordlessSession session = workos.passwordless.createSession(options); // optionally you can send the e-mail yourself using the url from `session.link` - workos.passwordless.sendSession(session.id); - ctx.render("sent.jte", Collections.singletonMap("email", email)); + + String link = session.link; + Map jteParams = new HashMap<>(); + jteParams.put("link", link); + jteParams.put("email", email); + + ctx.render("sent.jte", jteParams); } catch (Exception e) { e.printStackTrace(); String errorMessage = e.getMessage(); diff --git a/java-magic-link-example/src/main/jte/error.jte b/java-magic-link-example/src/main/jte/error.jte index 15d4bd5..178acaa 100644 --- a/java-magic-link-example/src/main/jte/error.jte +++ b/java-magic-link-example/src/main/jte/error.jte @@ -1,11 +1,14 @@ @param String errorMessage - +
-

Java Magic Link Example

+

Java Magic Link Example

- + - +
diff --git a/java-magic-link-example/src/main/jte/home.jte b/java-magic-link-example/src/main/jte/home.jte index 2708e52..38376e9 100644 --- a/java-magic-link-example/src/main/jte/home.jte +++ b/java-magic-link-example/src/main/jte/home.jte @@ -1,24 +1,69 @@ - + - -
-
- workos logo -
-

Java Magic Link Example

-
-
-
- -
-
- -
+ + +
+
+
+
+
+ Log in with Magic Link +
+
+ +
+
+ +
+
+ +
+
+ +
+
-
We'll never share your email with anyone else.
- -
- \ No newline at end of file + \ No newline at end of file diff --git a/java-magic-link-example/src/main/jte/profile.jte b/java-magic-link-example/src/main/jte/profile.jte index cb5f360..97007e6 100644 --- a/java-magic-link-example/src/main/jte/profile.jte +++ b/java-magic-link-example/src/main/jte/profile.jte @@ -1,71 +1,80 @@ @param com.workos.sso.models.Profile profile @param String state - + + +
-
-
- workos logo -
-
- -
-
-
-
-

Your app,

-

Enterprise Ready

-
-
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

+
+
+ workos logo +
- -
-
- -

Java Magic Link Example

- - @if(state != null) -
-
-

Your state param: ${state}

-
+
+
+
+
+

Login Successful

+
+
+
Directory User ID First Name
+ + + + + + + + + + + + + + + + + + + + + @if(state != null) + + + + + @endif +
KeyValue
Email${profile.email}
User ID${profile.id}
Connection Type${profile.connectionType}
Connection ID${profile.connectionId}
State${state}
+
- @endif - - - - - - - - - - - - -
EmailIDConnection Type
${profile.email}${profile.id}${profile.connectionType}
-
-
-
- + diff --git a/java-magic-link-example/src/main/jte/sent.jte b/java-magic-link-example/src/main/jte/sent.jte index 35ef88f..168ea06 100644 --- a/java-magic-link-example/src/main/jte/sent.jte +++ b/java-magic-link-example/src/main/jte/sent.jte @@ -1,15 +1,52 @@ @param String email +@param String link - + - -
-
- workos logo -
-
-

A magic link has been sent to your email: ${email}

-
+ + + +
+
+
+

Here is your Magic Link, ${email}

+
+ ${link} +
+
+
\ No newline at end of file diff --git a/java-magic-link-example/src/resources/main.css b/java-magic-link-example/src/resources/main.css index 5abb1d8..43ee516 100644 --- a/java-magic-link-example/src/resources/main.css +++ b/java-magic-link-example/src/resources/main.css @@ -1,257 +1,388 @@ body { - font-family: Inter, sans-serif; - background-color: #f9f9fb; - + font-family: Inter, sans-serif; + background-color: #f9f9fb; } .container_login { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 30%; - height: 90vh; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 30%; + height: 90vh; } .container_login img { - height: 150px; + height: 150px; } .container_login h1 { - font-size: 65px; - color: #111111; - position: relative; - bottom: 10px; + font-size: 65px; + color: #111111; + position: relative; + bottom: 10px; } .flex { - display: flex; - justify-content: center; + display: flex; + justify-content: center; + align-items: center; } .flex_column { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } -.space-between { - justify-content: space-between; +.m-top-20 { + margin-top: 20px; } .width-75 { - width: 75%; + width: 75%; } .width-40vw { - width: 40vw; + width: 40vw; +} + +.width-25vw { + width: 25vw; +} + +.width-18vw { + width: 18vw; +} + +.width-225px { + width: 225px; +} + +.width-941px { + width: 941px; +} + +.width-335 { + width: 335px; +} + +.height-315 { + height: 315px; +} + +.height-40vh { + height: 40vw; +} + +.height-80vh { + height: 80vh; +} + +.height-100vh { + height: 100vh; +} + +.space-between { + justify-content: space-between; } .container_success { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 100%; } .heading_div { - margin: 25px 0px 25px 0px; + margin: 35px 0px 0px 0px; } .heading_text_div { - align-self: center; + align-self: center; } .container_success { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 100%; - background-size: cover; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 100%; + background-size: cover; +} + +.text_input { + border: 1px solid #555555; + border-radius: 10px; + margin: 10px 0px 7px 0px; + padding: 5px; + height: 35px; + text-align: center; +} + +.code-input { + width: 75px; + height: 100px; + margin: 0px 5px 30px 5px; + font-size: 60px; + color: darkslategray; +} + +.qr_div { + align-self: center; + margin-top: 45px; +} + +.qr_code { + width: 7vw; + max-width: 100px; +} + +.factor_card { + border: 1px solid #555555; + border-radius: 10px; + width: 20vw; + margin: 0px 15px 0px 15px; + padding: 25px; +} + +.card { + border: 1px solid #555555; + border-radius: 10px; + margin: 0px 15px 0px 15px; + padding: 25px 50px; + margin-bottom: 20px; +} + +.profile_card { + width: 40vw; + overflow: scroll; + background: white; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .button { - background-color: #6363f1; - border: 2px solid #6363f1; - border-radius: 26px; - color: white; - padding: 8px 16px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - margin: 4px 2px; - transition-duration: 0.4s; - cursor: pointer; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + background-color: #6363f1; + border: 2px solid #6363f1; + border-radius: 10px; + color: white; + padding: 8px 16px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + transition-duration: 0.4s; + cursor: pointer; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .button-outline { - background-color: #f9f9fb; - color: #6363f1; - padding: 8px 16px; + background-color: #f9f9fb; + color: #6363f1; + padding: 8px 16px; +} + +.button-sm { + padding: 8px 16px; } .button:hover, .button-outline:hover { - background-color: #555555; - border: 2px solid #555555; - color: white; + background-color: #555555; + border: 2px solid #555555; + color: white; } .sales-button { - margin-left: 10px; + margin-left: 10px; } .login_button { - width: 95%; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + width: 100%; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + background-color: white; + color: ; +} + +.login_button:hover { + border-color: #6363f1; + color: #292929; } h2, h1 { - text-align: center; - color: #555555; + text-align: center; + color: #555555; } .logged_in_div_right { - width: 60%; - height: 90vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: relative; - bottom: 10%; - /* background-color: #f9f9fb; */ + width: 60%; + height: 90vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; + bottom: 10%; } .logged_in_div_left { - width: 40%; - height: 125vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: left; - background-color: #f9f9fb; - margin-left: 4vw; + width: 40%; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: left; + background-color: #f9f9fb; + margin-left: 4vw; } .logged_in_div_left div { - justify-content: left; - position: relative; - bottom: 20%; + justify-content: left; + position: relative; + bottom: 20%; } .logged_in_div_left h1 { - color: #111111; - font-size: 75px; - text-align: left; - margin-bottom: 0px; - font-weight: normal; - letter-spacing: -.05em; + color: #111111; + font-size: 75px; + text-align: left; + margin-bottom: 0px; + font-weight: normal; + letter-spacing: -0.05em; } .home-hero-gradient { - background-image: linear-gradient(45deg, #a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)); - background-size: 150% 100%; - background-repeat: no-repeat; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - animation: intro-gradient 1.2s cubic-bezier(0.85, 0.26, 0.89, 0.93); - animation-iteration-count: 1; - animation-fill-mode: backwards; - animation-delay: 0.4s; - text-align: left; - font-size: 75px; - letter-spacing: -.05em; - font-weight: normal; - margin-top: 0px; + background-image: linear-gradient( + 45deg, + #a163f1, + #6363f1 22%, + #3498ea 40%, + #40dfa3 67%, + rgba(64, 223, 163, 0) + ); + background-size: 150% 100%; + background-repeat: no-repeat; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + animation: intro-gradient 1.2s cubic-bezier(0.85, 0.26, 0.89, 0.93); + animation-iteration-count: 1; + animation-fill-mode: backwards; + animation-delay: 0.4s; + text-align: left; + font-size: 75px; + letter-spacing: -0.05em; + font-weight: normal; + margin-top: 0px; } .title-text { - margin-top: -50px; + margin-bottom: -50px; } .title-subtext { - color: gray; - line-height: 10px; - margin-bottom: 15px; - font-weight: 200; + color: gray; + line-height: 10px; + margin-bottom: 15px; + font-weight: 200; } .logged_in_div_left button { - padding: 8px 22px; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); -} - -div.text_box { - background-color: #f9f9fb; - width: 40vw; - max-height: 30vh; - padding: 10px; - word-wrap: break-word; - overflow: scroll; - border-width: 3px; - border-style: solid; - border-image: - linear-gradient(#a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)) 0 100%; + padding: 8px 22px; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .logged_in_nav { - display: flex; - justify-content: space-between; - background-color: #f9f9fb; - height: 60px; - padding: 15px 30px 15px 30px; + display: flex; + justify-content: space-between; + background-color: #f9f9fb; + + padding: 15px 30px 15px 30px; + z-index: 1000; - z-index: 1000; } .logged_in_nav p { - padding: 4px 0px 0px 15px; - line-height: 1; - color: #29363d; + padding: 4px 0px 0px 15px; + line-height: 1; + color: #29363d; } .logged_in_nav img { - height: 50px; + height: 50px; } .nav-item { - color: black; - border: 2px solid #f9f9fb; - background-color: #f9f9fb; - box-shadow: none; - border-radius: 5px; + color: black; + border: 2px solid #f9f9fb; + background-color: #f9f9fb; + box-shadow: none; + border-radius: 5px; } .blog-nav-button { - margin-right: 20px; - background-color: #f9f9fb; - border: 2px solid #f9f9fb; + margin-right: 20px; + background-color: #f9f9fb; + border: 2px solid #f9f9fb; } .nav-item:hover { - background-color: #f9f9fb; - border: 2px solid #f9f9fb; - color: #a6a4a4; + background-color: #f9f9fb; + border: 2px solid #f9f9fb; + color: #a6a4a4; } -pre.prettyprint { - border: none !important; +.workos-logo { + position: relative; + top: 38px; + padding-right: 25px; + height: 75px !important; } -.text_input { - border: 1px solid #555555; - border-radius: 10px; - margin: 20px 0px 7px 0px; - padding: 5px; - height: 35px; - width: 18vw; - text-align: center; -} \ No newline at end of file +.webhooks_container { + width: 45vw; + padding: 25px; + max-height: 450px; + overflow-y: scroll; +} + +.mb-0 { + margin-bottom: 0px; +} + +.mb-20 { + margin-botton: 20px; +} + +.google_button { + background-image: url("./images/google-button.png"); + background-size: cover; +} + +.microsoft_button { + background-image: url("./images/microsoft-button.png"); + background-size: cover; +} + +.saml_button { + background-image: url("./images/saml-button.png"); + background-size: cover; +} + +.error_message { + color: #6363f1; + margin-top: 0px; + font-size: 12px; +} + +#noborder { + border: none; +} + +#noborder > :first-child { + display: none; +} diff --git a/java-mfa-example/src/main/java/com/workos/java/examples/MfaApp.java b/java-mfa-example/src/main/java/com/workos/java/examples/MfaApp.java index f48699e..21302d3 100644 --- a/java-mfa-example/src/main/java/com/workos/java/examples/MfaApp.java +++ b/java-mfa-example/src/main/java/com/workos/java/examples/MfaApp.java @@ -1,4 +1,5 @@ package com.workos.java.examples; + import com.workos.WorkOS; import com.workos.mfa.MfaApi; import com.workos.mfa.MfaApi.EnrollFactorOptions; @@ -20,6 +21,7 @@ public class MfaApp { + private final WorkOS workos; private final String clientId; @@ -45,10 +47,13 @@ public MfaApp() { public void home(Context ctx) { - if(ctx.sessionAttribute("arrayFactorList") != null) { + if (ctx.sessionAttribute("arrayFactorList") != null) { ArrayList factorIdList = ctx.sessionAttribute("factorIdList"); - ArrayList factorList = ctx.sessionAttribute("arrayFactorList"); - ctx.render("home.jte", Collections.singletonMap("factorIdList", factorIdList)); + ArrayList factorList = ctx.sessionAttribute("arrayFactorList"); + Map jteParams = new HashMap<>(); + jteParams.put("factorList", factorList); + System.out.println(jteParams); + ctx.render("home.jte", jteParams); } else { ctx.render("home.jte"); } @@ -86,7 +91,7 @@ public void verify_factor(Context ctx) { ctx.render("challenge_result.jte", jteParams); } catch (Exception e) { - if(e.equals(null)) { + if (e.equals(null)) { ctx.render("error.jte"); } Map jteParams = new HashMap<>(); @@ -101,7 +106,7 @@ public void challenge_factor(Context ctx) { String smsCode = ctx.formParam("sms_message"); String currentFactorId = ctx.sessionAttribute("currentFactorId"); - if(factorType.equals("sms")) { + if (factorType.equals("sms")) { ChallengeFactorOptions options = MfaApi.ChallengeFactorOptions.builder() .authenticationFactorId(currentFactorId) .smsTemplate(smsCode) @@ -109,10 +114,10 @@ public void challenge_factor(Context ctx) { Challenge challenge = workos.mfa.challengeFactor(options); ctx.sessionAttribute("currentChallengeId", challenge.id); - ctx.render ("challenge_factor.jte"); + ctx.render("challenge_factor.jte"); } - if(factorType.equals("totp")) { + if (factorType.equals("totp")) { ChallengeFactorOptions options = MfaApi.ChallengeFactorOptions.builder() .authenticationFactorId(currentFactorId) .build(); @@ -120,14 +125,14 @@ public void challenge_factor(Context ctx) { Challenge challenge = workos.mfa.challengeFactor(options); ctx.sessionAttribute("currentChallengeId", challenge.id); } catch (Exception e) { - if(e.equals(null)) { + if (e.equals(null)) { ctx.render("error.jte"); } Map jteParams = new HashMap<>(); jteParams.put("error", e.getMessage()); ctx.render("error.jte", jteParams); } - ctx.render ("challenge_factor.jte"); + ctx.render("challenge_factor.jte"); } } @@ -142,35 +147,35 @@ public void factor_detail(Context ctx) { jteParams.put("createdAt", currentFactor.createdAt); jteParams.put("type", currentFactor.type); - switch(currentFactor.type) { + switch (currentFactor.type) { case "sms": jteParams.put("phoneNumber", currentFactor.sms.phoneNumber); jteParams.put("factorId", currentFactor.id); jteParams.put("createdAt", currentFactor.createdAt); jteParams.put("type", currentFactor.type); break; - case "totp": + case "totp": jteParams.put("factorId", currentFactor.id); jteParams.put("createdAt", currentFactor.createdAt); jteParams.put("type", currentFactor.type); jteParams.put("qrCode", currentFactor.totp.qrCode); break; - default: - String error = "Invalid type"; - String errorMessage = "Type must be either 'sms' or 'totp'"; - jteParams.put("error", error); - jteParams.put("errorMessage", errorMessage); - ctx.render("error.jte", jteParams); + default: + String error = "Invalid type"; + String errorMessage = "Type must be either 'sms' or 'totp'"; + jteParams.put("error", error); + jteParams.put("errorMessage", errorMessage); + ctx.render("error.jte", jteParams); } ctx.render("factor_detail.jte", jteParams); } - public void enroll_factor_details(Context ctx ) { + public void enroll_factor_details(Context ctx) { ctx.render("enroll_factor.jte"); } - public void enroll_totp_factor(Context ctx ) { + public void enroll_totp_factor(Context ctx) { JsonNode jsonNode = ctx.bodyAsClass(JsonNode.class); String issuer = jsonNode.get("issuer").asText(); String user = jsonNode.get("user").asText(); @@ -186,7 +191,7 @@ public void enroll_totp_factor(Context ctx ) { Factor factor = workos.mfa.enrollFactor(options); String factorId = factor.id; - if(ctx.sessionAttribute("factorList") != null) { + if (ctx.sessionAttribute("factorList") != null) { ArrayList factorIdList = ctx.sessionAttribute("factorIdList"); factorIdList.add(factorId); ctx.sessionAttribute("factorIdList", factorIdList); @@ -206,7 +211,7 @@ public void enroll_totp_factor(Context ctx ) { ctx.sessionAttribute("arrayFactorList", list); ctx.status(200).json(factor); } catch (Exception e) { - if(e.equals(null)) { + if (e.equals(null)) { ctx.render("error.jte"); } Map jteParams = new HashMap<>(); @@ -228,7 +233,7 @@ public void enroll_sms_factor(Context ctx) { Factor factor = workos.mfa.enrollFactor(options); String factorId = factor.id; - if(ctx.sessionAttribute("factorList") != null) { + if (ctx.sessionAttribute("factorList") != null) { ArrayList factorIdList = ctx.sessionAttribute("factorIdList"); factorIdList.add(factorId); ctx.sessionAttribute("factorIdList", factorIdList); @@ -248,7 +253,7 @@ public void enroll_sms_factor(Context ctx) { ctx.sessionAttribute("arrayFactorList", list); ctx.redirect("/"); } catch (Exception e) { - if(e.equals(null)) { + if (e.equals(null)) { ctx.render("error.jte"); } Map jteParams = new HashMap<>(); @@ -257,7 +262,7 @@ public void enroll_sms_factor(Context ctx) { } } - public void clear_session(Context ctx ) { + public void clear_session(Context ctx) { ctx.sessionAttribute("factorList", null); ctx.sessionAttribute("arrayFactorList", null); ctx.sessionAttribute("factorIdList", null); diff --git a/java-mfa-example/src/main/jte/challenge_factor.jte b/java-mfa-example/src/main/jte/challenge_factor.jte index c21ee83..4677ba9 100644 --- a/java-mfa-example/src/main/jte/challenge_factor.jte +++ b/java-mfa-example/src/main/jte/challenge_factor.jte @@ -7,32 +7,24 @@ workos logo - - -
-
-
-

Your app,

-

Enterprise Ready

+
+ -
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

+ - +
+
@@ -85,4 +77,5 @@ } } } + \ No newline at end of file diff --git a/java-mfa-example/src/main/jte/challenge_result.jte b/java-mfa-example/src/main/jte/challenge_result.jte index 3998fdd..5b6ff5f 100644 --- a/java-mfa-example/src/main/jte/challenge_result.jte +++ b/java-mfa-example/src/main/jte/challenge_result.jte @@ -13,32 +13,24 @@ workos logo
- -
-
-
-
-

Your app,

-

Enterprise Ready

+
+ -
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

+ - +
+
@@ -51,7 +43,9 @@ @endif
- + + +
diff --git a/java-mfa-example/src/main/jte/enroll_factor.jte b/java-mfa-example/src/main/jte/enroll_factor.jte index ac68c6f..ea5e30c 100644 --- a/java-mfa-example/src/main/jte/enroll_factor.jte +++ b/java-mfa-example/src/main/jte/enroll_factor.jte @@ -11,36 +11,28 @@ workos logo
- -
-
-
-
-

Your app,

-

Enterprise Ready

+
+ -
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

+ - +
+
-
+

Enroll SMS Factor

@@ -58,7 +50,7 @@
-
+

Enroll TOTP Factor

@@ -149,4 +141,5 @@ closeModalBtn.addEventListener("click", function() { overlay.style.display = "none" }) + diff --git a/java-mfa-example/src/main/jte/error.jte b/java-mfa-example/src/main/jte/error.jte index 710b308..53a0552 100644 --- a/java-mfa-example/src/main/jte/error.jte +++ b/java-mfa-example/src/main/jte/error.jte @@ -8,13 +8,21 @@ workos logo
-
diff --git a/java-mfa-example/src/main/jte/factor_detail.jte b/java-mfa-example/src/main/jte/factor_detail.jte index 393d2e6..48e8b28 100644 --- a/java-mfa-example/src/main/jte/factor_detail.jte +++ b/java-mfa-example/src/main/jte/factor_detail.jte @@ -2,8 +2,6 @@ @param String type @param String phoneNumber @param String createdAt -@param String qrCode - @@ -15,32 +13,25 @@ workos logo
- -
-
-
-
-

Your app,

-

Enterprise Ready

+
+ -
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

+ - +
+
+
@@ -60,7 +51,6 @@
-
@@ -76,7 +66,8 @@ @endif
- + Home
diff --git a/java-mfa-example/src/main/jte/home.jte b/java-mfa-example/src/main/jte/home.jte index 549b870..4d2bf2c 100644 --- a/java-mfa-example/src/main/jte/home.jte +++ b/java-mfa-example/src/main/jte/home.jte @@ -1,80 +1,83 @@ -@param java.util.ArrayList factorIdList +@param java.util.ArrayList $factorIdList +@param java.util.ArrayList factorList
-
-
- workos logo +
+
+ workos logo +
+
+ -
-
-
-
-

Your app,

-

Enterprise Ready

-
-
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

-
- -
-
-
- -
+
-
+
-

Current MFA Factors

-
+
+
+
+

Current MFA Factors

+
- -
-
+ +
+
- @if(factorIdList != null) -
- @for(var factor : factorIdList) - - - - @endfor - + @if(factorList != null) + + + + + + + @for(var factor : factorList) + + + + + + @endfor +
TypeIDView Details
${factor.type}${factor.id}settings icon +
- @else -
-

No Current Factors

-
- @endif + @else +
+

No Current Factors

+
+ @endif -
-
-
+
+
+ +
diff --git a/java-mfa-example/src/resources/images/icon-settings.svg b/java-mfa-example/src/resources/images/icon-settings.svg new file mode 100644 index 0000000..9717b95 --- /dev/null +++ b/java-mfa-example/src/resources/images/icon-settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/java-mfa-example/src/resources/main.css b/java-mfa-example/src/resources/main.css index 4b01c31..7015eee 100644 --- a/java-mfa-example/src/resources/main.css +++ b/java-mfa-example/src/resources/main.css @@ -1,285 +1,290 @@ body { - font-family: Inter, sans-serif; - background-color: #f9f9fb; + font-family: Inter, sans-serif; + background-color: #f9f9fb; } .container_login { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 30%; - height: 90vh; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 30%; + height: 90vh; } .container_login img { - height: 150px; + height: 150px; } .container_login h1 { - font-size: 65px; - color: #111111; - position: relative; - bottom: 10px; + font-size: 65px; + color: #111111; + position: relative; + bottom: 10px; } .flex { - display: flex; - justify-content: center; + display: flex; + justify-content: center; + align-items: center; } .flex_column { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } .space-between { - justify-content: space-between; + justify-content: space-between; } -.width-75 { - width: 75%; -} - -.width-40vw { - width: 40vw; -} - -.height-215 { - height: 215px; +.space-evenly { + justify-content: space-evenly; } .container_success { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 100%; } .heading_div { - margin: 25px 0px 25px 0px; + margin: 25px 0px 25px 0px; } .heading_text_div { - align-self: center; + align-self: center; } .container_success { - display: flex; - flex-direction: column; - justify-content: center; - margin: auto; - width: 100%; - background-size: cover; + display: flex; + flex-direction: column; + justify-content: center; + margin: auto; + width: 100%; + background-size: cover; } .button { - background-color: #6363f1; - border: 2px solid #6363f1; - border-radius: 26px; - color: white; - padding: 8px 16px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - margin: 4px 2px; - transition-duration: 0.4s; - cursor: pointer; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + background-color: #6363f1; + border: 2px solid #6363f1; + border-radius: 26px; + color: white; + padding: 8px 16px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + transition-duration: 0.4s; + cursor: pointer; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } .button-outline { - background-color: #f9f9fb; - color: #6363f1; - padding: 8px 16px; + background-color: #f9f9fb; + color: #6363f1; + padding: 8px 16px; } .button:hover, .button-outline:hover { - background-color: #555555; - border: 2px solid #555555; - color: white; + background-color: #555555; + border: 2px solid #555555; + color: white; } .sales-button { - margin-left: 10px; + margin-left: 10px; } .login_button { - width: 95%; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + width: 95%; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } h2, h1 { - text-align: center; - color: #555555; + text-align: center; + color: #555555; } .logged_in_div_right { - width: 60%; - height: 90vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: relative; - bottom: 10%; + width: 60%; + height: 90vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; + bottom: 10%; } .logged_in_div_left { - width: 40%; - height: 100vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: left; - background-color: #f9f9fb; - margin-left: 4vw; + width: 40%; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: left; + background-color: #f9f9fb; + margin-left: 4vw; } .logged_in_div_left div { - justify-content: left; - position: relative; - bottom: 20%; + justify-content: left; + position: relative; + bottom: 20%; } .logged_in_div_left h1 { - color: #111111; - font-size: 75px; - text-align: left; - margin-bottom: 0px; - font-weight: normal; - letter-spacing: -.05em; + color: #111111; + font-size: 75px; + text-align: left; + margin-bottom: 0px; + font-weight: normal; + letter-spacing: -0.05em; } .home-hero-gradient { - background-image: linear-gradient(45deg, #a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)); - background-size: 150% 100%; - background-repeat: no-repeat; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - animation: intro-gradient 1.2s cubic-bezier(0.85, 0.26, 0.89, 0.93); - animation-iteration-count: 1; - animation-fill-mode: backwards; - animation-delay: 0.4s; - text-align: left; - font-size: 75px; - letter-spacing: -.05em; - font-weight: normal; - margin-top: 0px; + background-image: linear-gradient( + 45deg, + #a163f1, + #6363f1 22%, + #3498ea 40%, + #40dfa3 67%, + rgba(64, 223, 163, 0) + ); + background-size: 150% 100%; + background-repeat: no-repeat; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + animation: intro-gradient 1.2s cubic-bezier(0.85, 0.26, 0.89, 0.93); + animation-iteration-count: 1; + animation-fill-mode: backwards; + animation-delay: 0.4s; + text-align: left; + font-size: 75px; + letter-spacing: -0.05em; + font-weight: normal; + margin-top: 0px; } .title-text { - margin-bottom: -50px; + margin-bottom: -50px; } .title-subtext { - color: gray; - line-height: 10px; - margin-bottom: 15px; - font-weight: 200; + color: gray; + line-height: 10px; + margin-bottom: 15px; + font-weight: 200; } .logged_in_div_left button { - padding: 8px 22px; - box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); + padding: 8px 22px; + box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1); } div.text_box { - background-color: #f9f9fb; - width: 40vw; - max-height: 30vh; - padding: 10px; - word-wrap: break-word; - overflow: scroll; - border-width: 3px; - border-style: solid; - border-image: - linear-gradient(#a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)) 0 100%; + background-color: #f9f9fb; + width: 40vw; + max-height: 30vh; + padding: 10px; + word-wrap: break-word; + overflow: scroll; + border-width: 3px; + border-style: solid; + border-image: linear-gradient( + #a163f1, + #6363f1 22%, + #3498ea 40%, + #40dfa3 67%, + rgba(64, 223, 163, 0) + ) + 0 100%; } .logged_in_nav { - display: flex; - justify-content: space-between; - background-color: #f9f9fb; - height: 60px; - padding: 15px 30px 15px 30px; - z-index: 999; + display: flex; + justify-content: space-between; + background-color: #f9f9fb; + height: 60px; + padding: 15px 30px 15px 30px; + z-index: 998; } .logged_in_nav p { - padding: 4px 0px 0px 15px; - line-height: 1; - color: #29363d; + padding: 4px 0px 0px 15px; + line-height: 1; + color: #29363d; } .logged_in_nav img { - height: 50px; + height: 50px; } .nav-item { - color: black; - border: 2px solid #f9f9fb; - background-color: #f9f9fb; - box-shadow: none; - border-radius: 5px; + color: black; + border: 2px solid #f9f9fb; + background-color: #f9f9fb; + box-shadow: none; + border-radius: 5px; } .blog-nav-button { - margin-right: 20px; - background-color: #f9f9fb; - border: 2px solid #f9f9fb; + margin-right: 20px; + background-color: #f9f9fb; + border: 2px solid #f9f9fb; } .nav-item:hover { - background-color: #f9f9fb; - border: 2px solid #f9f9fb; - color: #a6a4a4; + background-color: #f9f9fb; + border: 2px solid #f9f9fb; + color: #a6a4a4; } pre.prettyprint { - border: none !important; + border: none !important; } - .text_input { - border: 1px solid #555555; - border-radius: 10px; - margin: 20px 0px 7px 0px; - padding: 5px; - height: 35px; - width: 18vw; - text-align: center; + border: 1px solid #555555; + border-radius: 10px; + margin: 7px 0px 7px 0px; + padding: 5px; + height: 35px; + width: 18vw; + text-align: center; } .factor_card { - border: 1px solid #555555; - border-radius: 10px; - width: 20vw; - margin: 0px 15px 0px 15px; - padding: 25px; + border: 1px solid #555555; + border-radius: 10px; + width: 20vw; + margin: 0px 15px 0px 15px; + padding: 25px; } .card { - border: 1px solid #555555; - border-radius: 10px; - margin: 0px 15px 0px 15px; - padding: 25px 50px; - margin-bottom: 20px; + border: 1px solid #555555; + border-radius: 10px; + margin: 0px 15px 0px 15px; + padding: 25px 50px; + margin-bottom: 20px; } .code-input { - width: 75px; - height: 100px; - margin: 0px 5px 30px 5px; - font-size: 60px; - color: darkslategray; + width: 75px; + height: 100px; + margin: 0px 5px 30px 5px; + font-size: 60px; + color: darkslategray; } .overlay { @@ -288,7 +293,7 @@ pre.prettyprint { left: 0; right: 0; bottom: 0; - background-color: rgba(0,0,0,0.5); + background-color: rgba(0, 0, 0, 0.5); z-index: 999; } @@ -300,7 +305,7 @@ pre.prettyprint { background-color: #fff; padding: 25px; border-radius: 10px; - box-shadow: 0 0 10px rgba(0,0,0,0.5); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); z-index: 1000; display: flex; flex-direction: column; @@ -320,4 +325,77 @@ pre.prettyprint { button:disabled { opacity: 0.5; pointer-events: none; -} \ No newline at end of file +} + +tr { + text-align: center; + border-bottom: 1px solid #ebebf2; +} + +tr:hover { + background-color: #ebebf2; +} + +table, +td { + padding: 5px 40px; +} + +table { + border-collapse: collapse; + border-radius: 5px; + overflow: hidden; + margin: 25px 0px; +} + +th { + text-align: center; + font-weight: bolder; + font-size: large; + background-color: #e3e3e3; + border-right: none; + border-left: none; + padding: 15px 40px; +} + +.width-75 { + width: 75%; +} + +.width-10vw { + width: 10vw; +} + +.width-25vw { + width: 25vw; +} + +.width-40vw { + width: 40vw; +} + +.width-175px { + width: 175px; +} + +.width-350px { + width: 350px; +} + +.width-587px { + width: 587px; +} + +.width-725px { + width: 725px; +} + +.height-20px { + height: 20px; +} + +.height-250px { + height: 250px; +} + + diff --git a/java-sso-example/src/main/jte/profile.jte b/java-sso-example/src/main/jte/profile.jte index d1812ac..f929598 100644 --- a/java-sso-example/src/main/jte/profile.jte +++ b/java-sso-example/src/main/jte/profile.jte @@ -22,7 +22,7 @@
- +
diff --git a/java-sso-example/src/resources/main.css b/java-sso-example/src/resources/main.css index 6f6a6b0..2385363 100644 --- a/java-sso-example/src/resources/main.css +++ b/java-sso-example/src/resources/main.css @@ -381,3 +381,35 @@ h1 { #noborder > :first-child { display: none; } + +tr { + text-align: left; + border-bottom: 1px solid #ebebf2; +} + +tr:hover { + background-color: #ebebf2; +} + +table, +td { + padding: 5px 20px; +} + +table { + border-collapse: collapse; + border-radius: 5px; + overflow: hidden; + margin: 25px 0px; + width: 70vw; +} + +th { + text-align: center; + font-weight: bolder; + font-size: large; + background-color: #e3e3e3; + border-right: none; + border-left: none; + padding: 15px 40px; +} \ No newline at end of file diff --git a/java-webhooks-example/src/main/jte/home.jte b/java-webhooks-example/src/main/jte/home.jte index 4f0c8b5..fa949e5 100644 --- a/java-webhooks-example/src/main/jte/home.jte +++ b/java-webhooks-example/src/main/jte/home.jte @@ -18,30 +18,19 @@
-
-
-

Your app,

-

Enterprise Ready

-
-
-

Start selling to enterprise customers with just a few lines of code.

-

Implement features like single sign-on in minutes instead of months.

-
- -
-

Java Webhooks Example

- +
+

Live Webhooks View

+
+ Tutorial + Clear +
+
-
diff --git a/java-webhooks-example/src/resources/main.css b/java-webhooks-example/src/resources/main.css index e26a8e2..c76a4be 100644 --- a/java-webhooks-example/src/resources/main.css +++ b/java-webhooks-example/src/resources/main.css @@ -196,10 +196,6 @@ div.text_box { padding: 10px; word-wrap: break-word; overflow: scroll; - border-width: 3px; - border-style: solid; - border-image: - linear-gradient(#a163f1, #6363f1 22%, #3498ea 40%, #40dfa3 67%, rgba(64, 223, 163, 0)) 0 100%; } .logged_in_nav { @@ -254,4 +250,8 @@ pre.prettyprint { height: 35px; width: 18vw; text-align: center; +} + +.lh-none { + line-height: var(--bs-body-line-height) } \ No newline at end of file
SSO Profile