Skip to content

Commit 79b0a8c

Browse files
feat: add input addons (#317)
1 parent b7d02d5 commit 79b0a8c

9 files changed

Lines changed: 76 additions & 4 deletions

File tree

packages/core/shield/src/actions/sign_out.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ impl SignOutAction {
4545
value: Some(InputValue::String {
4646
value: Self::name(),
4747
}),
48+
addon_start: None,
49+
addon_end: None,
4850
}],
4951
}])
5052
}

packages/core/shield/src/form.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ pub struct Input {
1515
pub label: Option<String>,
1616
pub r#type: InputType,
1717
pub value: Option<InputValue>,
18+
pub addon_start: Option<InputAddon>,
19+
pub addon_end: Option<InputAddon>,
1820
}
1921

2022
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
@@ -26,6 +28,18 @@ pub enum InputValue {
2628
String { value: String },
2729
}
2830

31+
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
32+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
33+
#[serde(
34+
tag = "type",
35+
rename_all = "kebab-case",
36+
rename_all_fields = "camelCase"
37+
)]
38+
pub enum InputAddon {
39+
Image { src: String },
40+
Text { text: String },
41+
}
42+
2943
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
3044
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
3145
#[serde(tag = "type", rename_all = "kebab-case")]

packages/methods/shield-credentials/src/email_password.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ impl<U: User> Credentials<U, EmailPasswordData> for EmailPasswordCredentials<U>
5151
..Default::default()
5252
}),
5353
value: None,
54+
addon_start: None,
55+
addon_end: None,
5456
},
5557
Input {
5658
name: "password".to_owned(),
@@ -62,6 +64,8 @@ impl<U: User> Credentials<U, EmailPasswordData> for EmailPasswordCredentials<U>
6264
..Default::default()
6365
}),
6466
value: None,
67+
addon_start: None,
68+
addon_end: None,
6569
},
6670
],
6771
}

packages/methods/shield-credentials/src/username_password.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ impl<U: User> Credentials<U, UsernamePasswordData> for UsernamePasswordCredentia
5151
..Default::default()
5252
}),
5353
value: None,
54+
addon_start: None,
55+
addon_end: None,
5456
},
5557
Input {
5658
name: "password".to_owned(),
@@ -62,6 +64,8 @@ impl<U: User> Credentials<U, UsernamePasswordData> for UsernamePasswordCredentia
6264
..Default::default()
6365
}),
6466
value: None,
67+
addon_start: None,
68+
addon_end: None,
6569
},
6670
],
6771
}

packages/methods/shield-oauth/src/actions/sign_in.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use async_trait::async_trait;
22
use oauth2::{CsrfToken, PkceCodeChallenge, Scope, url::form_urlencoded::parse};
33
use serde::Deserialize;
44
use shield::{
5-
Action, ActionMethod, ConfigurationError, Form, Input, InputType, InputTypeHidden,
5+
Action, ActionMethod, ConfigurationError, Form, Input, InputAddon, InputType, InputTypeHidden,
66
InputTypeSubmit, InputValue, MethodSession, Provider, Request, Response, ResponseType,
77
SessionAction, ShieldError, SignInAction, erased_action,
88
};
@@ -61,6 +61,8 @@ impl Action<OauthProvider, OauthSession> for OauthSignInAction {
6161
label: None,
6262
r#type: InputType::Hidden(InputTypeHidden::default()),
6363
value: Some(InputValue::Origin),
64+
addon_start: None,
65+
addon_end: None,
6466
},
6567
Input {
6668
name: "redirectUrl".to_owned(),
@@ -69,6 +71,8 @@ impl Action<OauthProvider, OauthSession> for OauthSignInAction {
6971
value: Some(InputValue::Query {
7072
key: "redirectUrl".to_owned(),
7173
}),
74+
addon_start: None,
75+
addon_end: None,
7276
},
7377
Input {
7478
name: "submit".to_owned(),
@@ -77,6 +81,10 @@ impl Action<OauthProvider, OauthSession> for OauthSignInAction {
7781
value: Some(InputValue::String {
7882
value: format!("Sign in with {}", provider.name()),
7983
}),
84+
addon_start: provider
85+
.icon_url
86+
.map(|icon_url| InputAddon::Image { src: icon_url }),
87+
addon_end: None,
8088
},
8189
],
8290
}])

packages/methods/shield-oidc/src/actions/sign_in.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ use openidconnect::{
55
};
66
use serde::Deserialize;
77
use shield::{
8-
Action, ActionMethod, Form, Input, InputType, InputTypeHidden, InputTypeSubmit, InputValue,
9-
MethodSession, Provider, Request, Response, ResponseType, SessionAction, ShieldError,
10-
SignInAction, erased_action,
8+
Action, ActionMethod, Form, Input, InputAddon, InputType, InputTypeHidden, InputTypeSubmit,
9+
InputValue, MethodSession, Provider, Request, Response, ResponseType, SessionAction,
10+
ShieldError, SignInAction, erased_action,
1111
};
1212
use url::Url;
1313

@@ -64,6 +64,8 @@ impl Action<OidcProvider, OidcSession> for OidcSignInAction {
6464
label: None,
6565
r#type: InputType::Hidden(InputTypeHidden::default()),
6666
value: Some(InputValue::Origin),
67+
addon_start: None,
68+
addon_end: None,
6769
},
6870
Input {
6971
name: "redirectUrl".to_owned(),
@@ -72,6 +74,8 @@ impl Action<OidcProvider, OidcSession> for OidcSignInAction {
7274
value: Some(InputValue::Query {
7375
key: "redirectUrl".to_owned(),
7476
}),
77+
addon_start: None,
78+
addon_end: None,
7579
},
7680
Input {
7781
name: "submit".to_owned(),
@@ -80,6 +84,10 @@ impl Action<OidcProvider, OidcSession> for OidcSignInAction {
8084
value: Some(InputValue::String {
8185
value: format!("Sign in with {}", provider.name()),
8286
}),
87+
addon_start: provider
88+
.icon_url
89+
.map(|icon_url| InputAddon::Image { src: icon_url }),
90+
addon_end: None,
8391
},
8492
],
8593
}])

packages/methods/shield-workos/src/actions/index.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ impl Action<WorkosProvider, ()> for WorkosIndexAction {
8888
..Default::default()
8989
}),
9090
value: None,
91+
addon_start: None,
92+
addon_end: None,
9193
},
9294
Input {
9395
name: "submit".to_owned(),
@@ -96,6 +98,8 @@ impl Action<WorkosProvider, ()> for WorkosIndexAction {
9698
value: Some(InputValue::String {
9799
value: "Continue".to_owned(),
98100
}),
101+
addon_start: None,
102+
addon_end: None,
99103
},
100104
],
101105
}]
@@ -116,6 +120,8 @@ impl Action<WorkosProvider, ()> for WorkosIndexAction {
116120
value: Some(InputValue::String {
117121
value: oauth_provider.to_string(),
118122
}),
123+
addon_start: None,
124+
addon_end: None,
119125
},
120126
Input {
121127
name: "submit".to_owned(),
@@ -133,6 +139,8 @@ impl Action<WorkosProvider, ()> for WorkosIndexAction {
133139
)
134140
.to_owned(),
135141
}),
142+
addon_start: None,
143+
addon_end: None,
136144
},
137145
],
138146
}),
@@ -149,6 +157,8 @@ impl Action<WorkosProvider, ()> for WorkosIndexAction {
149157
value: Some(InputValue::String {
150158
value: connection.id.to_string(),
151159
}),
160+
addon_start: None,
161+
addon_end: None,
152162
},
153163
Input {
154164
name: "submit".to_owned(),
@@ -157,6 +167,8 @@ impl Action<WorkosProvider, ()> for WorkosIndexAction {
157167
value: Some(InputValue::String {
158168
value: format!("Continue with {}", connection.name).to_owned(),
159169
}),
170+
addon_start: None,
171+
addon_end: None,
160172
},
161173
],
162174
}))

packages/methods/shield-workos/src/actions/sign_in.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ impl Action<WorkosProvider, ()> for WorkosSignInAction {
6060
..Default::default()
6161
}),
6262
value: None,
63+
addon_start: None,
64+
addon_end: None,
6365
},
6466
Input {
6567
name: "password".to_owned(),
@@ -71,6 +73,8 @@ impl Action<WorkosProvider, ()> for WorkosSignInAction {
7173
..Default::default()
7274
}),
7375
value: None,
76+
addon_start: None,
77+
addon_end: None,
7478
},
7579
Input {
7680
name: "submit".to_owned(),
@@ -79,6 +83,8 @@ impl Action<WorkosProvider, ()> for WorkosSignInAction {
7983
value: Some(InputValue::String {
8084
value: "Sign in".to_owned(),
8185
}),
86+
addon_start: None,
87+
addon_end: None,
8288
},
8389
],
8490
},
@@ -92,6 +98,8 @@ impl Action<WorkosProvider, ()> for WorkosSignInAction {
9298
required: Some(true),
9399
}),
94100
value: None,
101+
addon_start: None,
102+
addon_end: None,
95103
},
96104
Input {
97105
name: "submit".to_owned(),
@@ -100,6 +108,8 @@ impl Action<WorkosProvider, ()> for WorkosSignInAction {
100108
value: Some(InputValue::String {
101109
value: "Email sign-in code".to_owned(),
102110
}),
111+
addon_start: None,
112+
addon_end: None,
103113
},
104114
],
105115
},

packages/methods/shield-workos/src/actions/sign_up.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ impl Action<WorkosProvider, ()> for WorkosSignUpAction {
6060
..Default::default()
6161
}),
6262
value: None,
63+
addon_start: None,
64+
addon_end: None,
6365
},
6466
Input {
6567
name: "password".to_owned(),
@@ -71,6 +73,8 @@ impl Action<WorkosProvider, ()> for WorkosSignUpAction {
7173
..Default::default()
7274
}),
7375
value: None,
76+
addon_start: None,
77+
addon_end: None,
7478
},
7579
Input {
7680
name: "submit".to_owned(),
@@ -79,6 +83,8 @@ impl Action<WorkosProvider, ()> for WorkosSignUpAction {
7983
value: Some(InputValue::String {
8084
value: "Sign up".to_owned(),
8185
}),
86+
addon_start: None,
87+
addon_end: None,
8288
},
8389
],
8490
},
@@ -92,6 +98,8 @@ impl Action<WorkosProvider, ()> for WorkosSignUpAction {
9298
required: Some(true),
9399
}),
94100
value: None,
101+
addon_start: None,
102+
addon_end: None,
95103
},
96104
Input {
97105
name: "submit".to_owned(),
@@ -100,6 +108,8 @@ impl Action<WorkosProvider, ()> for WorkosSignUpAction {
100108
value: Some(InputValue::String {
101109
value: "Email sign-up code".to_owned(),
102110
}),
111+
addon_start: None,
112+
addon_end: None,
103113
},
104114
],
105115
},

0 commit comments

Comments
 (0)