Skip to content

Commit 9ec6d98

Browse files
committed
initial frame for reddit oauth
1 parent e987a78 commit 9ec6d98

File tree

7 files changed

+39
-7
lines changed

7 files changed

+39
-7
lines changed

Controllers/AuthController.cs

+33
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@ public async Task<IActionResult> Github()
170170
return Redirect(GithubrUrl);
171171
}
172172

173+
[HttpGet]
174+
public async Task<IActionResult> Reddit()
175+
{
176+
string RedditUrl = $"https://github.com/login/oauth/authorize?scope=identity&client_id={_oauthConfig.Value.Reddit.client_id}&response_type=core&state={Guid.NewGuid().ToString()}&redirect_uri=https://{this.Request.Host}/Auth/RedditCallback&duration=temporary";
177+
return Redirect(RedditUrl);
178+
}
179+
180+
173181
[HttpGet]
174182
public async Task<IActionResult> GoogleCallback([FromQuery]IDictionary<string, string> query)
175183
{
@@ -356,6 +364,29 @@ public async Task<IActionResult> GithubCallback([FromQuery]IDictionary<string, s
356364
return Redirect("/");
357365
}
358366

367+
[HttpGet]
368+
public async Task<IActionResult> RedditCallback([FromQuery]IDictionary<string, string> query)
369+
{
370+
if (query["code"] == null)
371+
{
372+
TempData["info"] = "Link via Reddit failed. Try again later.";
373+
return Redirect("/");
374+
}
375+
376+
Dictionary<string, string> parameters = new Dictionary<string, string>();
377+
parameters["code"] = query["code"];
378+
parameters["redirect_uri"] = $"https://{this.Request.Host}/Auth/RedditCallback";
379+
380+
381+
Dictionary<string, string> headers = new Dictionary<string, string>();
382+
// TODO: client_id:client_secret in b64
383+
headers.Add("Authorization", $"Basic {WIP}");
384+
385+
RedditToken userToken = await _post<RedditToken>("https://www.reddit.com/api/v1/access_token", parameters);
386+
387+
return Redirect("/");
388+
}
389+
359390
public async Task<T> _post<T>(string path, Dictionary<string, string> body, Dictionary<string, string> headers = null)
360391
{
361392
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, path);
@@ -414,6 +445,8 @@ public class GithubToken
414445
public string scope { get; set; }
415446
}
416447

448+
public class RedditToken : GithubToken { }
449+
417450
public class GithubUserInfo
418451
{
419452
public string avatar_url { get; set; }

Models/Config/OAuthConfig.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class OAuthConfig
66
{
77
public PlatformConfig Google { get; set; }
88
public PlatformConfig Github { get; set; }
9-
public PlatformConfig Linkedin { get; set; }
9+
public PlatformConfig Reddit { get; set; }
1010

1111
}
1212
public class PlatformConfig

Views/Auth/Login.cshtml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<button style="width:60%; margin-bottom:10px" class="waves-effect waves-light btn light-blue" type="submit">Submit</button>
2121
<a class="loginButton waves-effect waves-light btn" href="/Auth/Google"><img class="logginButtonIcon" src="~/images/google.svg" /> Sign in with Google</a>
2222
<a class="loginButton waves-effect waves-light btn" href="/Auth/Github"><img class="logginButtonIcon" src="~/images/github.svg" />Sign in with Github</a>
23-
<a class=" loginButton waves-light btn" href="/Auth/Linkedin"><img class="logginButtonIcon" src="~/images/linkedin.svg" />Sign in with Linkedin</a>
23+
<a class="loginButton waves-light btn" href="/Auth/Reddit"><img class="logginButtonIcon" src="~/images/reddit.svg" />Sign in with Reddit</a>
2424
</div>
2525

2626
</form>

Views/Auth/Register.cshtml

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
</div>
2222
</div>
2323
<button style="width:60%; margin-bottom:10px" class="waves-effect waves-light btn" type="submit">Submit</button>
24-
2524
</form>
2625

2726
<script>

appsettingsExample.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
"client_id": "GOOGLE_CLIENT_ID",
1616
"client_secret": "GOOGLE_CLIENT_SECRET"
1717
},
18-
"Linkedin": {
19-
"client_id": "LINKEDIN_CLIENT_ID",
20-
"client_secret": "LINKEDIN_CLIENT_SECRET"
18+
"Reddit": {
19+
"client_id": "REDDIT_CLIENT_ID",
20+
"client_secret": "REDDIT_CLIENT_SECRET"
2121
},
2222
"Github": {
2323
"client_id": "GITHUB_CLIENT_ID",

wwwroot/images/linkedin.svg

-1
This file was deleted.

wwwroot/images/reddit.svg

+1
Loading

0 commit comments

Comments
 (0)