Skip to content

Commit

Permalink
Send confirmation time to email service
Browse files Browse the repository at this point in the history
  • Loading branch information
ADAS-antonio-calatayud committed Jul 22, 2021
1 parent bbeaac2 commit 9cde771
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 159 deletions.
157 changes: 1 addition & 156 deletions Docker/MySQL_Init_Script/1.init.sql
Original file line number Diff line number Diff line change
@@ -1,46 +1,15 @@
-- phpMyAdmin SQL Dump
-- version 5.0.1
-- https://www.phpmyadmin.net/
--
-- Host: db
-- Generation Time: Feb 18, 2020 at 02:41 PM
-- Server version: 8.0.19
-- PHP Version: 7.4.1

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `H2020.IPMDecisions.IDP`
--

CREATE DATABASE IF NOT EXISTS `H2020.IPMDecisions.IDP` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
USE `H2020.IPMDecisions.IDP`;

-- --------------------------------------------------------

--
-- Database User: `ipm_idp_user`
--

CREATE USER `ipm_idp_user`@`%` IDENTIFIED BY 'user_password';
GRANT USAGE ON *.* TO `ipm_idp_user`@`%`;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, REFERENCES ON `H2020.IPMDecisions.IDP`.* TO `ipm_idp_user`@`%`;

-- --------------------------------------------------------

--
-- Table structure for table `ApplicationClient`
--

CREATE TABLE `ApplicationClient` (
`Base64Secret` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`Name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
Expand All @@ -51,12 +20,6 @@ CREATE TABLE `ApplicationClient` (
`JWTAudienceCategory` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `RefreshToken`
--

CREATE TABLE `RefreshToken` (
`Id` char(36) NOT NULL,
`ApplicationClientId` char(36) NOT NULL,
Expand All @@ -65,38 +28,20 @@ CREATE TABLE `RefreshToken` (
`ExpiresUtc` datetime(6) NOT NULL DEFAULT '0001-01-01 00:00:00.000000'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `Role`
--

CREATE TABLE `Role` (
`Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`Name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`NormalizedName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`ConcurrencyStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `RoleClaim`
--

CREATE TABLE `RoleClaim` (
`Id` int NOT NULL,
`RoleId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`ClaimType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
`ClaimValue` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `User`
--

CREATE TABLE `User` (
`Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`UserName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
Expand All @@ -118,198 +63,98 @@ CREATE TABLE `User` (
`InactiveEmailsSent` int NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `UserClaim`
--

CREATE TABLE `UserClaim` (
`Id` int NOT NULL,
`UserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`ClaimType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
`ClaimValue` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `UserLogin`
--

CREATE TABLE `UserLogin` (
`LoginProvider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`ProviderKey` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`ProviderDisplayName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
`UserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `UserRole`
--

CREATE TABLE `UserRole` (
`UserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`RoleId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `UserToken`
--

CREATE TABLE `UserToken` (
`UserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`LoginProvider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`Value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------

--
-- Table structure for table `__EFMigrationsHistory`
--

CREATE TABLE `__EFMigrationsHistory` (
`MigrationId` varchar(95) NOT NULL,
`ProductVersion` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `ApplicationClient`
--
ALTER TABLE `ApplicationClient`
ADD PRIMARY KEY (`Id`);

--
-- Indexes for table `RefreshToken`
--
ALTER TABLE `RefreshToken`
ADD PRIMARY KEY (`Id`),
ADD KEY `IX_RefreshToken_ApplicationClientId` (`ApplicationClientId`),
ADD KEY `IX_RefreshToken_UserId` (`UserId`);

--
-- Indexes for table `Role`
--
ALTER TABLE `Role`
ADD PRIMARY KEY (`Id`),
ADD UNIQUE KEY `RoleNameIndex` (`NormalizedName`);

--
-- Indexes for table `RoleClaim`
--
ALTER TABLE `RoleClaim`
ADD PRIMARY KEY (`Id`),
ADD KEY `IX_RoleClaim_RoleId` (`RoleId`);

--
-- Indexes for table `User`
--
ALTER TABLE `User`
ADD PRIMARY KEY (`Id`),
ADD UNIQUE KEY `UserNameIndex` (`NormalizedUserName`),
ADD KEY `EmailIndex` (`NormalizedEmail`);

--
-- Indexes for table `UserClaim`
--
ALTER TABLE `UserClaim`
ADD PRIMARY KEY (`Id`),
ADD KEY `IX_UserClaim_UserId` (`UserId`);

--
-- Indexes for table `UserLogin`
--
ALTER TABLE `UserLogin`
ADD PRIMARY KEY (`LoginProvider`,`ProviderKey`),
ADD KEY `IX_UserLogin_UserId` (`UserId`);

--
-- Indexes for table `UserRole`
--
ALTER TABLE `UserRole`
ADD PRIMARY KEY (`UserId`,`RoleId`),
ADD KEY `IX_UserRole_RoleId` (`RoleId`);

--
-- Indexes for table `UserToken`
--
ALTER TABLE `UserToken`
ADD PRIMARY KEY (`UserId`,`LoginProvider`,`Name`);

--
-- Indexes for table `__EFMigrationsHistory`
--
ALTER TABLE `__EFMigrationsHistory`
ADD PRIMARY KEY (`MigrationId`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `RoleClaim`
--
ALTER TABLE `RoleClaim`
MODIFY `Id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `UserClaim`
--
ALTER TABLE `UserClaim`
MODIFY `Id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `RefreshToken`
--
ALTER TABLE `RefreshToken`
ADD CONSTRAINT `FK_RefreshToken_ApplicationClient_ApplicationClientId` FOREIGN KEY (`ApplicationClientId`) REFERENCES `ApplicationClient` (`Id`) ON DELETE CASCADE;

--
-- Constraints for table `RoleClaim`
--
ALTER TABLE `RoleClaim`
ADD CONSTRAINT `FK_RoleClaim_Role_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `Role` (`Id`) ON DELETE CASCADE;

--
-- Constraints for table `UserClaim`
--
ALTER TABLE `UserClaim`
ADD CONSTRAINT `FK_UserClaim_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `User` (`Id`) ON DELETE CASCADE;

--
-- Constraints for table `UserLogin`
--
ALTER TABLE `UserLogin`
ADD CONSTRAINT `FK_UserLogin_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `User` (`Id`) ON DELETE CASCADE;

--
-- Constraints for table `UserRole`
--
ALTER TABLE `UserRole`
ADD CONSTRAINT `FK_UserRole_Role_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `Role` (`Id`) ON DELETE CASCADE,
ADD CONSTRAINT `FK_UserRole_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `User` (`Id`) ON DELETE CASCADE;

--
-- Constraints for table `UserToken`
--
ALTER TABLE `UserToken`
ADD CONSTRAINT `FK_UserToken_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `User` (`Id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
COMMIT;
3 changes: 2 additions & 1 deletion H2020.IPMDecisions.IDP.API/Controllers/AccountsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public async Task<IActionResult> ForgotPassword(
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[HttpPost("resetpassword", Name = "ResetPassword")]
// POST: api/Accounts/resetpassword
public async Task<IActionResult> ResetPassword(
[FromBody] ResetPasswordDto resetPasswordDto)
{
Expand Down Expand Up @@ -142,7 +143,7 @@ public async Task<IActionResult> ResendConfirmationEmail([FromBody] UserEmailDto

if (response.IsSuccessful)
return Ok();

return BadRequest(new { message = response.ErrorMessage });
}

Expand Down
1 change: 1 addition & 0 deletions H2020.IPMDecisions.IDP.BLL/BusinessLogic.Accounts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ private async Task<RegistrationEmail> CreateRegistrationEmailObject(ApplicationU
var configKey = "UIPageAddresses:ConfirmUserFormPageAddress";
var emailObject = GenerateEmailLink(identityUser, configKey, token, "id");
var registrationEmail = this.mapper.Map<RegistrationEmail>(emailObject);
registrationEmail.HoursToConfirmEmail = int.Parse(this.configuration["EmailConfirmationAllowanceHours"]);
return registrationEmail;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ private StringContent CreateEmailJsonObject(Email email)
var jsonObject = new System.Json.JsonObject();
jsonObject.Add("toAddress", email.ToAddress);
jsonObject.Add("callbackUrl", email.CallbackUrl.AbsoluteUri);
jsonObject.Add("hoursToConfirmEmail", email.HoursToConfirmEmail);
jsonObject.Add("token", email.Token);
var customContentType = config["MicroserviceInternalCommunication:ContentTypeHeader"];

Expand Down
3 changes: 2 additions & 1 deletion H2020.IPMDecisions.IDP.Core/Models/Email.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

namespace H2020.IPMDecisions.IDP.Core.Models
{
public class Email
public class Email
{
public string ToAddress { get; set; }
public Uri CallbackUrl { get; set; }
public string Token { get; set; }
public int HoursToConfirmEmail { get; set; } = 24;
}
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ dotnet build
Run command to start database on Docker:

```console
'docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0.19'
docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0.19
```

Open file `H2020.IPMDecisions.IDP.API\appsettings.json` and change the json object `ConnectionStrings\MySqlDbConnection` with your MySql instance.
Expand Down

0 comments on commit 9cde771

Please sign in to comment.