Browse Source

Seed for identity service (jdoe@eshop.com)

pull/49/merge
Carlos Cañizares Estévez 8 years ago
parent
commit
7ba1c339c4
11 changed files with 102 additions and 35 deletions
  1. +2
    -2
      docker-compose.yml
  2. +1
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj
  3. +1
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj.bak
  4. +0
    -1
      src/Services/Identity/eShopOnContainers.Identity/Controllers/AccountController.cs
  5. +86
    -0
      src/Services/Identity/eShopOnContainers.Identity/Data/ApplicationContextSeed.cs
  6. +1
    -1
      src/Services/Identity/eShopOnContainers.Identity/Services/EFLoginService.cs
  7. +7
    -23
      src/Services/Identity/eShopOnContainers.Identity/Startup.cs
  8. +1
    -2
      src/Services/Identity/eShopOnContainers.Identity/appsettings.json
  9. +1
    -1
      src/Web/WebMVC/Program.cs
  10. +1
    -2
      src/Web/WebMVC/Properties/launchSettings.json
  11. +1
    -1
      src/Web/WebMVC/appsettings.json

+ 2
- 2
docker-compose.yml View File

@ -39,10 +39,10 @@ services:
image: eshop/identity
environment:
- SpaClient=http://localhost:5104
- ConnectionString=Server=identity.data;Database=aspnet-Microsoft.eShopOnContainers;User Id=sa;Password=Pass@word
- ConnectionStrings__DefaultConnection=Server=identity.data;Database=aspnet-Microsoft.eShopOnContainers;User Id=sa;Password=Pass@word
#- MvcClient=http://104.40.62.65:5100 #Remote: VM Needs to have public access at 5105.
- MvcClient=http://localhost:5100 #Local: You need a entry in windows host file to run identity in local docker.
#10.0.75.1:5105
#10.0.75.1:5105 CCE/TODO: try to avoid host entry.
ports:
- "5105:5105"
depends_on:


+ 1
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj View File

@ -16,7 +16,7 @@
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v7.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v6.0</TargetFrameworkVersion>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>


+ 1
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.TestRunner.Droid/eShopOnContainers.TestRunner.Droid.csproj.bak View File

@ -16,7 +16,7 @@
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v6.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v7.0</TargetFrameworkVersion>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>


+ 0
- 1
src/Services/Identity/eShopOnContainers.Identity/Controllers/AccountController.cs View File

@ -104,7 +104,6 @@ namespace IdentityServer4.Quickstart.UI.Controllers
};
await _loginService.SignIn(user);
// make sure the returnUrl is still valid, and if yes - redirect back to authorize endpoint
if (_interaction.IsValidReturnUrl(model.ReturnUrl))
{


+ 86
- 0
src/Services/Identity/eShopOnContainers.Identity/Data/ApplicationContextSeed.cs View File

@ -0,0 +1,86 @@
namespace Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure
{
using AspNetCore.Identity;
using EntityFrameworkCore;
using Extensions.Logging;
using global::eShopOnContainers.Identity.Data;
using global::eShopOnContainers.Identity.Models;
using Microsoft.AspNetCore.Builder;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Threading.Tasks;
public class ApplicationContextSeed
{
private readonly IPasswordHasher<ApplicationUser> _passwordHasher;
public ApplicationContextSeed(IPasswordHasher<ApplicationUser> passwordHasher)
{
_passwordHasher = passwordHasher;
}
public async Task SeedAsync(IApplicationBuilder applicationBuilder, ILoggerFactory loggerFactory, int? retry = 0)
{
int retryForAvaiability = retry.Value;
try
{
var context = (ApplicationDbContext)applicationBuilder
.ApplicationServices.GetService(typeof(ApplicationDbContext));
context.Database.Migrate();
if (!context.Users.Any())
{
context.Users.AddRange(
GetDefaultUser());
await context.SaveChangesAsync();
}
}
catch (Exception ex)
{
if (retryForAvaiability < 10)
{
retryForAvaiability++;
var log = loggerFactory.CreateLogger("catalog seed");
log.LogError(ex.Message);
await SeedAsync(applicationBuilder, loggerFactory, retryForAvaiability);
}
}
}
private ApplicationUser GetDefaultUser()
{
var user =
new ApplicationUser()
{
CardHolderName = "Jhon Doe",
CardNumber = "1111-2222-33-4444",
CardType = 1,
City = "Seattle",
Country = "EEUU",
CountryCode = "91",
Email = "jdoe@eshop.com",
Expiration = "12/20",
Id = Guid.NewGuid().ToString(),
LastName = "Doe",
Name = "Jhon",
PhoneNumber = "600 11 22 33",
UserName = "jdoe@eshop.com",
ZipCode = "56730",
State = "Washington",
Street = "Street..",
SecurityNumber = "256",
NormalizedEmail = "JDOE@ESHOP.COM",
NormalizedUserName = "JDOE@ESHOP.COM",
SecurityStamp = Guid.NewGuid().ToString("D")
};
user.PasswordHash = _passwordHasher.HashPassword(user, "eshopContainers.123");
return user;
}
}
}

+ 1
- 1
src/Services/Identity/eShopOnContainers.Identity/Services/EFLoginService.cs View File

@ -19,7 +19,7 @@ namespace eShopOnContainers.Identity.Services
public async Task<ApplicationUser> FindByUsername(string user)
{
return await _userManager.FindByNameAsync(user);
return await _userManager.FindByEmailAsync(user);
}
public async Task<bool> ValidateCredentials(ApplicationUser user, string password)


+ 7
- 23
src/Services/Identity/eShopOnContainers.Identity/Startup.cs View File

@ -15,6 +15,8 @@ using eShopOnContainers.Identity.Services;
using eShopOnContainers.Identity.Configuration;
using IdentityServer4.Services;
using System.Threading;
using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure;
using Microsoft.AspNetCore.Identity;
namespace eShopOnContainers.Identity
{
@ -49,6 +51,7 @@ namespace eShopOnContainers.Identity
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
@ -102,29 +105,10 @@ namespace eShopOnContainers.Identity
template: "{controller=Home}/{action=Index}/{id?}");
});
MigrateDb(app);
}
int retries = 0;
private void MigrateDb(IApplicationBuilder app)
{
try
{
var context = (ApplicationDbContext)app
.ApplicationServices.GetService(typeof(ApplicationDbContext));
using (context)
{
context.Database.Migrate();
}
}
catch (Exception)
{
retries++;
if (retries < 2)
MigrateDb(app);
}
//Seed Data
var hasher = new PasswordHasher<ApplicationUser>();
new ApplicationContextSeed(hasher).SeedAsync(app, loggerFactory)
.Wait();
}
}
}

+ 1
- 2
src/Services/Identity/eShopOnContainers.Identity/appsettings.json View File

@ -1,9 +1,8 @@
{
"ConnectionStrings": {
//"DefaultConnection": "Server=identity.data;Database=aspnet-Microsoft.eShopOnContainers;User Id=sa;Password=Pass@word"
"DefaultConnection": "Server=127.0.0.1,5433;Database=aspnet-Microsoft.eShopOnContainers;User Id=sa;Password=Pass@word"
},
"MvcClient": "http://localhost:5100",
"MvcClient": "http://localhost:5001",
"SpaClient": "http://localhost:5104",
"Logging": {
"IncludeScopes": false,


+ 1
- 1
src/Web/WebMVC/Program.cs View File

@ -14,8 +14,8 @@ namespace Microsoft.eShopOnContainers.WebMVC
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
//.UseIISIntegration()
.UseUrls("http://0.0.0.0:5100")
.UseIISIntegration()
.UseStartup<Startup>()
.Build();


+ 1
- 2
src/Web/WebMVC/Properties/launchSettings.json View File

@ -3,14 +3,13 @@
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5100",
"applicationUrl": "http://localhost:5001",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}


+ 1
- 1
src/Web/WebMVC/appsettings.json View File

@ -2,7 +2,7 @@
"CatalogUrl": "http://localhost:5101",
"OrderingUrl": "http://localhost:5102",
"BasketUrl": "http://localhost:5103",
"IdentityUrl": "http://localhost:5105",
"IdentityUrl": "http://localhost:5000",
"CallBackUrl": "http://localhost:5100/",
"Logging": {
"IncludeScopes": false,


Loading…
Cancel
Save