Skip to content

Commit da36a7f

Browse files
authored
Added redirect to login (#758)
* Added redirect to login * improved options null check * Added xml-docs * Expanded external uri context to use also in auth controller * Removed unused namespaces
1 parent 5643e8e commit da36a7f

File tree

13 files changed

+55
-69
lines changed

13 files changed

+55
-69
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace OutOfSchool.IdentityServer.Config.ExternalUriModels;
2+
3+
/// <summary>
4+
/// Contains external uris that are used with OutOfSchoolAngular client.
5+
/// </summary>
6+
public class AngularClientScopeExternalUrisConfig
7+
{
8+
public const string Name = "ExternalUris:AngularClientScope";
9+
10+
/// <summary>
11+
/// Gets or sets login uri.
12+
/// </summary>
13+
public string Login { get; set; }
14+
}

OutOfSchool/OutOfSchool.IdentityServer/Controllers/AccountController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public async Task<IActionResult> ConfirmEmail()
205205
}
206206

207207
[HttpGet]
208-
public async Task<IActionResult> EmailConfirmation(string userId, string token)
208+
public async Task<IActionResult> EmailConfirmation(string userId, string token, string redirectUrl = null)
209209
{
210210
logger.LogDebug($"{path} started. User(id): {userId}.");
211211

@@ -235,7 +235,7 @@ public async Task<IActionResult> EmailConfirmation(string userId, string token)
235235

236236
logger.LogInformation($"{path} Email was confirmed. User(id): {userId}.");
237237

238-
return Ok();
238+
return string.IsNullOrEmpty(redirectUrl) ? Ok() : Redirect(redirectUrl);
239239
}
240240

241241
[HttpGet]

OutOfSchool/OutOfSchool.IdentityServer/Services/Interfaces/IProviderAdminChangesLogService.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System.Threading.Tasks;
2-
using OutOfSchool.Services.Enums;
3-
using OutOfSchool.Services.Models;
1+
using OutOfSchool.Services.Enums;
42

53
namespace OutOfSchool.IdentityServer.Services.Interfaces;
64

OutOfSchool/OutOfSchool.IdentityServer/Services/Interfaces/IProviderAdminService.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
using System.Threading.Tasks;
2-
3-
using Microsoft.AspNetCore.Http;
4-
using Microsoft.AspNetCore.Mvc;
5-
6-
using OutOfSchool.Common;
1+
using Microsoft.AspNetCore.Mvc;
72
using OutOfSchool.Common.Models;
83

94
namespace OutOfSchool.IdentityServer.Services.Interfaces;

OutOfSchool/OutOfSchool.IdentityServer/Services/Password/CryptoRandom.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Security.Cryptography;
1+
using System.Security.Cryptography;
32

43
using IdentityModel;
54

OutOfSchool/OutOfSchool.IdentityServer/Services/Password/PasswordGenerator.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
using System.Collections.Generic;
2-
using System.Linq;
3-
4-
using Microsoft.AspNetCore.Identity;
5-
6-
namespace OutOfSchool.IdentityServer.Services.Password;
1+
namespace OutOfSchool.IdentityServer.Services.Password;
72

83
public static class PasswordGenerator
94
{

OutOfSchool/OutOfSchool.IdentityServer/Services/ProfileService.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
1-
using System.Collections.Generic;
2-
using System.Linq;
3-
using System.Security.Claims;
4-
using System.Threading.Tasks;
1+
using System.Security.Claims;
52
using IdentityServer4.Extensions;
63
using IdentityServer4.Models;
74
using IdentityServer4.Services;
8-
using Microsoft.AspNetCore.Identity;
9-
using OutOfSchool.Common;
10-
using OutOfSchool.Common.PermissionsModule;
115
using OutOfSchool.Services.Enums;
12-
using OutOfSchool.Services.Models;
13-
using OutOfSchool.Services.Repository;
146

157
namespace OutOfSchool.IdentityServer.Services;
168

OutOfSchool/OutOfSchool.IdentityServer/Services/ProviderAdminChangesLogService.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
using System;
2-
using System.Linq;
3-
using System.Threading.Tasks;
4-
using OutOfSchool.IdentityServer.Services.Interfaces;
5-
using OutOfSchool.Services.Enums;
6-
using OutOfSchool.Services.Models;
7-
using OutOfSchool.Services.Repository;
1+
using OutOfSchool.Services.Enums;
82

93
namespace OutOfSchool.IdentityServer.Services;
104

OutOfSchool/OutOfSchool.IdentityServer/Services/ProviderAdminService.cs

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,11 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Net;
5-
using System.Threading.Tasks;
6-
using AutoMapper;
7-
using Microsoft.AspNetCore.Identity;
1+
using AutoMapper;
82
using Microsoft.AspNetCore.Mvc;
9-
using Microsoft.EntityFrameworkCore;
10-
using Microsoft.Extensions.Logging;
113
using Microsoft.Extensions.Options;
12-
using OutOfSchool.Common;
134
using OutOfSchool.Common.Models;
14-
using OutOfSchool.EmailSender;
15-
using OutOfSchool.IdentityServer.Config;
16-
using OutOfSchool.IdentityServer.Services.Interfaces;
5+
using OutOfSchool.IdentityServer.Config.ExternalUriModels;
176
using OutOfSchool.IdentityServer.Services.Password;
187
using OutOfSchool.RazorTemplatesData.Models.Emails;
19-
using OutOfSchool.RazorTemplatesData.Services;
20-
using OutOfSchool.Services;
218
using OutOfSchool.Services.Enums;
22-
using OutOfSchool.Services.Models;
23-
using OutOfSchool.Services.Repository;
249

2510
namespace OutOfSchool.IdentityServer.Services;
2611

@@ -31,6 +16,7 @@ public class ProviderAdminService : IProviderAdminService
3116
private readonly ILogger<ProviderAdminService> logger;
3217
private readonly IProviderAdminRepository providerAdminRepository;
3318
private readonly GRPCConfig gPRCConfig;
19+
private readonly AngularClientScopeExternalUrisConfig externalUrisConfig;
3420

3521
private readonly UserManager<User> userManager;
3622
private readonly OutOfSchoolDbContext context;
@@ -46,17 +32,20 @@ public ProviderAdminService(
4632
OutOfSchoolDbContext context,
4733
IRazorViewToStringRenderer renderer,
4834
IProviderAdminChangesLogService providerAdminChangesLogService,
49-
IOptions<GRPCConfig> gRPCConfig)
35+
IOptions<GRPCConfig> gRPCConfig,
36+
IOptions<AngularClientScopeExternalUrisConfig> externalUrisConfig)
5037
{
51-
this.mapper = mapper;
52-
this.userManager = userManager;
53-
this.context = context;
54-
this.providerAdminRepository = providerAdminRepository;
55-
this.logger = logger;
56-
this.emailSender = emailSender;
57-
this.renderer = renderer;
58-
this.providerAdminChangesLogService = providerAdminChangesLogService;
59-
this.gPRCConfig = gRPCConfig.Value;
38+
this.mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
39+
this.userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
40+
this.context = context ?? throw new ArgumentNullException(nameof(context));
41+
this.providerAdminRepository = providerAdminRepository ?? throw new ArgumentNullException(nameof(providerAdminRepository));
42+
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
43+
this.emailSender = emailSender ?? throw new ArgumentNullException(nameof(emailSender));
44+
this.renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
45+
this.providerAdminChangesLogService = providerAdminChangesLogService ?? throw new ArgumentNullException(nameof(providerAdminChangesLogService));
46+
this.gPRCConfig = gRPCConfig?.Value ?? throw new ArgumentNullException(nameof(gRPCConfig));
47+
this.externalUrisConfig =
48+
externalUrisConfig?.Value ?? throw new ArgumentNullException(nameof(externalUrisConfig));
6049
}
6150

6251
public async Task<ResponseDto> CreateProviderAdminAsync(
@@ -162,11 +151,11 @@ await providerAdminChangesLogService.SaveChangesLogAsync(providerAdmin, userId,
162151

163152
string confirmationLink =
164153
url is null
165-
? $"{gPRCConfig.ProviderAdminConfirmationLink}?userId={user.Id}&token={token}"
154+
? $"{gPRCConfig.ProviderAdminConfirmationLink}?userId={user.Id}&token={token}?redirectUrl={externalUrisConfig.Login}"
166155
: url.Action(
167156
"EmailConfirmation",
168157
"Account",
169-
new { userId = user.Id, token },
158+
new { userId = user.Id, token, redirectUrl = externalUrisConfig.Login },
170159
"https");
171160

172161
var subject = "Запрошення!";

OutOfSchool/OutOfSchool.IdentityServer/Services/ProviderAdminServiceGRPC.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
using System.Threading.Tasks;
21
using AutoMapper;
32
using Grpc.Core;
43
using GrpcService;
5-
using Microsoft.AspNetCore.Authorization;
6-
using OutOfSchool.Common;
7-
using OutOfSchool.Common.Extensions;
84
using OutOfSchool.Common.Models;
95

106
namespace GrpcServiceServer;

0 commit comments

Comments
 (0)