1use oauth2_client::re_exports::{Deserialize_enum_str, Scope, Serialize_enum_str};
2
3pub const TENANT_COMMON: &str = "common";
4
5pub mod authorization_code_grant;
6pub mod device_authorization_grant;
7
8pub use authorization_code_grant::MicrosoftProviderForWebApps;
9pub use device_authorization_grant::MicrosoftProviderForDevices;
10
11pub mod extensions;
12pub use extensions::MicrosoftExtensionsBuilder;
13
14pub fn token_url(tenant: impl AsRef<str>) -> String {
15 format!(
16 "https://login.microsoftonline.com/{}/oauth2/v2.0/token",
17 tenant.as_ref()
18 )
19}
20pub fn device_authorization_url(tenant: impl AsRef<str>) -> String {
21 format!(
22 "https://login.microsoftonline.com/{}/oauth2/v2.0/devicecode",
23 tenant.as_ref()
24 )
25}
26pub fn authorization_url(tenant: impl AsRef<str>) -> String {
27 format!(
28 "https://login.microsoftonline.com/{}/oauth2/v2.0/authorize",
29 tenant.as_ref()
30 )
31}
32
33#[derive(Deserialize_enum_str, Serialize_enum_str, Debug, Clone, PartialEq, Eq)]
35pub enum MicrosoftScope {
36 #[serde(rename = "openid")]
38 Openid,
39 #[serde(rename = "email")]
40 Email,
41 #[serde(rename = "profile")]
42 Profile,
43 #[serde(rename = "offline_access")]
44 OfflineAccess,
45 #[serde(rename = "User.Read")]
47 #[serde(alias = "https://graph.microsoft.com/User.Read")]
48 UserRead,
49 #[serde(other)]
56 Other(String),
57}
58impl Scope for MicrosoftScope {}