Skip to content
This repository was archived by the owner on Mar 10, 2022. It is now read-only.

Commit 2550a6e

Browse files
Added OAuth2 list providers endpoint
Signed-off-by: JannikEmmerich <[email protected]>
1 parent e678f36 commit 2550a6e

File tree

2 files changed

+32
-32
lines changed

2 files changed

+32
-32
lines changed

server/src/main/java/net/cryptic_game/backend/server/authentication/OAuth2Config.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,15 @@ public class OAuth2Config {
1717
@Value("${DISCORD_OAUTH2_REDIRECT_URI:}")
1818
private String discordRedirectUri;
1919

20-
@Value("${DISCORD_OAUTH2_SCOPES:}")
21-
private String discordScopes;
20+
@Value("${DISCORD_OAUTH2_AUTH_URI:}")
21+
private String discordAuthUri;
2222

2323
@Value("${GITHUB_OAUTH2_CLIENT_ID:}")
2424
private String githubClientId;
2525

2626
@Value("${GITHUB_OAUTH2_CLIENT_SECRET:}")
2727
private String githubClientSecret;
2828

29-
@Value("${GITHUB_OAUTH2_REDIRECT_URI:}")
30-
private String githubRedirectUri;
31-
32-
@Value("${GITHUB_OAUTH2_SCOPES:}")
33-
private String githubScopes;
29+
@Value("${GITHUB_OAUTH2_AUTH_URI:}")
30+
private String githubAuthUri;
3431
}

server/src/main/java/net/cryptic_game/backend/server/server/http/HttpOauth2Endpoints.java

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.cryptic_game.backend.server.server.http;
22

33
import io.netty.handler.codec.http.HttpResponseStatus;
4-
import lombok.RequiredArgsConstructor;
54
import net.cryptic_game.backend.base.api.annotations.ApiEndpoint;
65
import net.cryptic_game.backend.base.api.annotations.ApiEndpointCollection;
76
import net.cryptic_game.backend.base.api.annotations.ApiParameter;
@@ -21,38 +20,42 @@
2120

2221
import java.security.Key;
2322
import java.time.OffsetDateTime;
23+
import java.util.List;
2424
import java.util.Optional;
2525

26-
@RequiredArgsConstructor
2726
@ApiEndpointCollection(id = "oauth2", type = ApiType.REST)
2827
public final class HttpOauth2Endpoints {
2928

3029
private final Key key;
31-
private final OAuth2Config oAuth2Config;
3230
private final OAuth2Provider oAuth2Provider;
3331
private final UserRepository userRepository;
3432
private final UserOAuthProviderIdRepository userOAuthProviderIdRepository;
33+
private final ApiResponse apiResponse;
3534

36-
@ApiEndpoint(id = "info")
37-
public ApiResponse providerInfo(@ApiParameter(id = "provider") final String provider) {
38-
switch (provider) {
39-
case "discord":
40-
return new ApiResponse(HttpResponseStatus.OK, JsonBuilder.create("provider",
41-
JsonBuilder
42-
.create("client_id", this.oAuth2Config.getDiscordClientId())
43-
.add("redirect_uri", this.oAuth2Config.getDiscordRedirectUri())
44-
.add("scopes", this.oAuth2Config.getDiscordScopes())
45-
));
46-
case "github":
47-
return new ApiResponse(HttpResponseStatus.OK, JsonBuilder.create("provider",
48-
JsonBuilder
49-
.create("client_id", this.oAuth2Config.getGithubClientId())
50-
.add("redirect_uri", this.oAuth2Config.getGithubRedirectUri())
51-
.add("scopes", this.oAuth2Config.getGithubScopes())
52-
));
53-
default:
54-
return new ApiResponse(HttpResponseStatus.NOT_FOUND, "PROVIDER");
55-
}
35+
public HttpOauth2Endpoints(final Key key,
36+
final OAuth2Config oAuth2Config,
37+
final OAuth2Provider oAuth2Provider,
38+
final UserRepository userRepository,
39+
final UserOAuthProviderIdRepository userOAuthProviderIdRepository) {
40+
this.key = key;
41+
this.oAuth2Provider = oAuth2Provider;
42+
this.userRepository = userRepository;
43+
this.userOAuthProviderIdRepository = userOAuthProviderIdRepository;
44+
this.apiResponse = new ApiResponse(HttpResponseStatus.OK, List.of(
45+
JsonBuilder
46+
.create("id", "discord")
47+
.add("display_name", "Discord")
48+
.add("auth_uri", oAuth2Config.getDiscordAuthUri()),
49+
JsonBuilder
50+
.create("id", "github")
51+
.add("display_name", "GitHub")
52+
.add("auth_uri", oAuth2Config.getGithubAuthUri())
53+
));
54+
}
55+
56+
@ApiEndpoint(id = "list")
57+
public ApiResponse list() {
58+
return this.apiResponse;
5659
}
5760

5861
@ApiEndpoint(id = "callback")
@@ -61,10 +64,10 @@ public Mono<ApiResponse> callback(@ApiParameter(id = "provider") final String pr
6164
final Mono<String> userIdMono;
6265
switch (provider) {
6366
case "discord":
64-
userIdMono = oAuth2Provider.discordUserId(code);
67+
userIdMono = this.oAuth2Provider.discordUserId(code);
6568
break;
6669
case "github":
67-
userIdMono = oAuth2Provider.githubUserId(code);
70+
userIdMono = this.oAuth2Provider.githubUserId(code);
6871
break;
6972
default:
7073
return Mono.just(new ApiResponse(HttpResponseStatus.NOT_FOUND, "PROVIDER"));

0 commit comments

Comments
 (0)