| ... | @@ -188,6 +188,11 @@ pub fn providerById(alloc: std.mem.Allocator, name: string) !?Provider { | ... | @@ -188,6 +188,11 @@ pub fn providerById(alloc: std.mem.Allocator, name: string) !?Provider { |
| 188 | return p; | 188 | return p; |
| 189 | } | 189 | } |
| 190 | } | 190 | } |
| | 191 | inline for (comptime std.meta.globalOption("oauth2_providers", []const Provider) orelse &.{}) |p| { |
| | 192 | if (std.mem.eql(u8, p.id, name)) { |
| | 193 | return p; |
| | 194 | } |
| | 195 | } |
| 191 | const c_ind = std.mem.indexOfScalar(u8, name, ',') orelse return null; | 196 | const c_ind = std.mem.indexOfScalar(u8, name, ',') orelse return null; |
| 192 | const p_id = name[0..c_ind]; | 197 | const p_id = name[0..c_ind]; |
| 193 | const domain = name[c_ind + 1 ..]; | 198 | const domain = name[c_ind + 1 ..]; |
| ... | @@ -209,6 +214,22 @@ pub fn providerById(alloc: std.mem.Allocator, name: string) !?Provider { | ... | @@ -209,6 +214,22 @@ pub fn providerById(alloc: std.mem.Allocator, name: string) !?Provider { |
| 209 | }; | 214 | }; |
| 210 | } | 215 | } |
| 211 | } | 216 | } |
| | 217 | inline for (comptime std.meta.globalOption("oauth2_dynamic_providers", []const Provider) orelse &.{}) |didp| { |
| | 218 | if (std.mem.eql(u8, didp.id, p_id)) { |
| | 219 | return Provider{ |
| | 220 | .id = name, |
| | 221 | .authorize_url = try std.fmt.allocPrint(alloc, didp.authorize_url, args), |
| | 222 | .token_url = try std.fmt.allocPrint(alloc, didp.token_url, args), |
| | 223 | .me_url = try std.fmt.allocPrint(alloc, didp.me_url, args), |
| | 224 | .scope = didp.scope, |
| | 225 | .name_prop = didp.name_prop, |
| | 226 | .name_prefix = didp.name_prefix, |
| | 227 | .id_prop = didp.id_prop, |
| | 228 | .logo = didp.logo, |
| | 229 | .color = didp.color, |
| | 230 | }; |
| | 231 | } |
| | 232 | } |
| 212 | return null; | 233 | return null; |
| 213 | } | 234 | } |
| 214 | | 235 | |