1 use {crate::oauth::provider::Provider, uuid::Uuid};
2
3 pub fn get_consent_url(provider: Provider) -> String {
4 match provider {
5 Provider::Google {
6 client_id,
7 redirect_uri,
8 } => format!(
9 "https://accounts.google.com/o/oauth2/auth?client_id={}&redirect_uri={}&scope=email%20profile&response_type=code&access_type=offline",
10 client_id, redirect_uri
11 ),
12 Provider::Apple {
13 client_id,
14 redirect_uri,
15 state,
16 } => {
17 let state_param = state.unwrap_or_else(|| Uuid::new_v4().to_string());
18
19 format!(
20 "https://appleid.apple.com/auth/authorize?client_id={}&redirect_uri={}&response_type=code&scope=email%20name&response_mode=form_post&state={}",
21 client_id, redirect_uri, state_param
22 )
23 }
24 }
25 }