Browse Source

Added github auth.

pull/337/head
Sebastian Stehle 7 years ago
parent
commit
27436ef952
  1. 24
      src/Squidex/Config/Authentication/GithubHandler.cs
  2. 7
      src/Squidex/Config/Authentication/GoogleHandler.cs
  3. 9
      src/Squidex/Config/MyIdentityOptions.cs
  4. 1
      src/Squidex/Squidex.csproj
  5. 3
      src/Squidex/app/theme/_static.scss
  6. 4
      src/Squidex/app/theme/_vars.scss

24
src/Squidex/Config/Authentication/GithubHandler.cs

@ -5,10 +5,10 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System.Linq;
using System.Security.Claims; using System.Security.Claims;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication.OAuth; using Microsoft.AspNetCore.Authentication.OAuth;
using Squidex.Infrastructure;
using Squidex.Shared.Identity; using Squidex.Shared.Identity;
namespace Squidex.Config.Authentication namespace Squidex.Config.Authentication
@ -17,27 +17,11 @@ namespace Squidex.Config.Authentication
{ {
public override Task CreatingTicket(OAuthCreatingTicketContext context) public override Task CreatingTicket(OAuthCreatingTicketContext context)
{ {
var displayNameClaim = context.Identity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name); var nameClaim = context.Identity.FindFirst(ClaimTypes.Name)?.Value;
if (displayNameClaim != null)
{
context.Identity.SetDisplayName(displayNameClaim.Value);
}
var pictureUrl = context.User?.Value<string>("picture");
if (string.IsNullOrWhiteSpace(pictureUrl))
{
pictureUrl = context.User?["image"]?.Value<string>("url");
if (pictureUrl != null && pictureUrl.EndsWith("?sz=50", System.StringComparison.Ordinal))
{
pictureUrl = pictureUrl.Substring(0, pictureUrl.Length - 6);
}
}
if (!string.IsNullOrWhiteSpace(pictureUrl)) if (!string.IsNullOrWhiteSpace(nameClaim))
{ {
context.Identity.SetPictureUrl(pictureUrl); context.Identity.SetDisplayName(nameClaim);
} }
return base.CreatingTicket(context); return base.CreatingTicket(context);

7
src/Squidex/Config/Authentication/GoogleHandler.cs

@ -26,10 +26,11 @@ namespace Squidex.Config.Authentication
public override Task CreatingTicket(OAuthCreatingTicketContext context) public override Task CreatingTicket(OAuthCreatingTicketContext context)
{ {
var displayNameClaim = context.Identity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name); var nameClaim = context.Identity.FindFirst(ClaimTypes.Name)?.Value;
if (displayNameClaim != null)
if (!string.IsNullOrWhiteSpace(nameClaim))
{ {
context.Identity.SetDisplayName(displayNameClaim.Value); context.Identity.SetDisplayName(nameClaim);
} }
var pictureUrl = context.User?.Value<string>("picture"); var pictureUrl = context.User?.Value<string>("picture");

9
src/Squidex/Config/MyIdentityOptions.cs

@ -13,6 +13,10 @@ namespace Squidex.Config
public string AdminPassword { get; set; } public string AdminPassword { get; set; }
public string GithubClient { get; set; }
public string GithubSecret { get; set; }
public string GoogleClient { get; set; } public string GoogleClient { get; set; }
public string GoogleSecret { get; set; } public string GoogleSecret { get; set; }
@ -49,6 +53,11 @@ namespace Squidex.Config
return !string.IsNullOrWhiteSpace(OidcAuthority) && !string.IsNullOrWhiteSpace(OidcClient) && !string.IsNullOrWhiteSpace(OidcSecret); return !string.IsNullOrWhiteSpace(OidcAuthority) && !string.IsNullOrWhiteSpace(OidcClient) && !string.IsNullOrWhiteSpace(OidcSecret);
} }
public bool IsGithubAuthConfigured()
{
return !string.IsNullOrWhiteSpace(GithubClient) && !string.IsNullOrWhiteSpace(GithubSecret);
}
public bool IsGoogleAuthConfigured() public bool IsGoogleAuthConfigured()
{ {
return !string.IsNullOrWhiteSpace(GoogleClient) && !string.IsNullOrWhiteSpace(GoogleSecret); return !string.IsNullOrWhiteSpace(GoogleClient) && !string.IsNullOrWhiteSpace(GoogleSecret);

1
src/Squidex/Squidex.csproj

@ -55,6 +55,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Algolia.Search" Version="5.2.1" /> <PackageReference Include="Algolia.Search" Version="5.2.1" />
<PackageReference Include="AspNet.Security.OAuth.GitHub" Version="2.0.0" />
<PackageReference Include="Ben.BlockingDetector" Version="0.0.3" /> <PackageReference Include="Ben.BlockingDetector" Version="0.0.3" />
<PackageReference Include="EventStore.ClientAPI.NetCore" Version="4.1.0.23" /> <PackageReference Include="EventStore.ClientAPI.NetCore" Version="4.1.0.23" />
<PackageReference Include="IdentityServer4" Version="2.3.2" /> <PackageReference Include="IdentityServer4" Version="2.3.2" />

3
src/Squidex/app/theme/_static.scss

@ -109,7 +109,8 @@ noscript {
&-icon { &-icon {
display: inline-block; display: inline-block;
font-size: 1.5rem; height: 20px;
font-size: 1.1rem;
font-weight: normal; font-weight: normal;
vertical-align: middle; vertical-align: middle;
width: 1.6rem; width: 1.6rem;

4
src/Squidex/app/theme/_vars.scss

@ -17,8 +17,8 @@ $color-extern-google: #d34836;
$color-extern-google-icon: #b02c1b; $color-extern-google-icon: #b02c1b;
$color-extern-microsoft: #004185; $color-extern-microsoft: #004185;
$color-extern-microsoft-icon: #1b67b7; $color-extern-microsoft-icon: #1b67b7;
$color-extern-github: #191919; $color-extern-github: #353535;
$color-extern-github-icon: #4a4a4a; $color-extern-github-icon: #616161;
$color-extern-twitter: #1da1f2; $color-extern-twitter: #1da1f2;
$color-extern-twitter-icon: #1681bf; $color-extern-twitter-icon: #1681bf;

Loading…
Cancel
Save