Ejemplo n.º 1
0
        private async Task CreateAccount(CreateAccount command)
        {
            var payload  = command.Payload;
            var response = new Dictionary <string, string>();

            try
            {
                var user = new HostelUser
                {
                    UserName    = payload["Email"],
                    Email       = payload["Email"],
                    PhoneNumber = payload["Phone"],
                    Hostel      = "Baafog"
                };
                var created = await _userManager.CreateAsync(user, payload["Password"]);

                if (created.Succeeded)
                {
                    var userClaims = new List <Claim>();
                    var userRole   = payload["Role"];
                    userClaims.Add(new Claim(JwtClaimTypes.Role, userRole));
                    userClaims.AddRange(new Claim[] {
                        new Claim("PreferredUserName", payload["Email"]),
                        new Claim("Role", userRole)
                    });
                    var claim = await _userManager.AddClaimsAsync(user, userClaims);

                    if (!claim.Succeeded)
                    {
                        await _userManager.DeleteAsync(user);

                        response["Created"] = "false";
                        response["Type"]    = "AddClaimsAsync";
                        response["Errors"]  = string.Join(", ", claim.Errors);
                        response["Message"] = "Your account created was aborted";
                    }
                }
                else
                {
                    response["Created"] = "false";
                    response["Type"]    = "CreateAsync";
                    response["Errors"]  = string.Join(", ", created.Errors);
                    response["Message"] = "Your account was not created";
                }
            }
            catch (Exception e)
            {
                response["Message"] = e.Message;
            }
            var @event = new MassTransitEvent("AccountCreated", command.Commander, command.CommandId, response);

            await SendToQueue(@event);

            await Self.GracefulStop(TimeSpan.FromSeconds(10));
        }
Ejemplo n.º 2
0
        public static void EnsureSeedData(IServiceProvider serviceProvider, IConfiguration configuration)
        {
            //Console.WriteLine("Seeding database...");

            using (var scope = serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope())
            {
                scope.ServiceProvider.GetRequiredService <PersistedGrantDbContext>().Database.Migrate();
                {
                    var context = scope.ServiceProvider.GetRequiredService <ConfigurationDbContext>();
                    context.Database.Migrate();
                    EnsureSeedData(context, configuration);
                }

                {
                    var context = scope.ServiceProvider.GetService <ApplicationDbContext>();
                    context.Database.Migrate();
                    var userMgr = scope.ServiceProvider.GetRequiredService <UserManager <HostelUser> >();
                    var alice   = userMgr.FindByNameAsync("*****@*****.**").Result;
                    if (alice == null)
                    {
                        alice = new HostelUser
                        {
                            UserName             = "******",
                            Email                = "*****@*****.**",
                            EmailConfirmed       = true,
                            PhoneNumber          = "2348136786808",
                            PhoneNumberConfirmed = true,
                            TwoFactorEnabled     = true
                        };
                        var result = userMgr.CreateAsync(alice, "alicechukwu").Result;
                        if (!result.Succeeded)
                        {
                            throw new Exception(result.Errors.First().Description);
                        }

                        result = userMgr.AddClaimsAsync(alice, new Claim[] {
                            new Claim(JwtClaimTypes.Role, "Tester"),
                            new Claim(JwtClaimTypes.PreferredUserName, "*****@*****.**"),
                            new Claim(JwtClaimTypes.Name, "Ebere Abanonu"),
                            new Claim(JwtClaimTypes.GivenName, "Ebere"),
                            new Claim(JwtClaimTypes.FamilyName, "Abanonu"),
                            new Claim(JwtClaimTypes.Email, "*****@*****.**"),
                            new Claim(JwtClaimTypes.EmailVerified, "true", ClaimValueTypes.Boolean),
                            new Claim(JwtClaimTypes.WebSite, "http://alice.com"),
                            new Claim(JwtClaimTypes.Address, @"{ 'street_address': 'One Hacker Way', 'locality': 'Heidelberg', 'postal_code': 69118, 'country': 'Germany' }", IdentityServer4.IdentityServerConstants.ClaimValueTypes.Json),
                            new Claim("TimeZone", "W. Central Africa Standard Time"),
                        }).Result;
                        if (!result.Succeeded)
                        {
                            throw new Exception(result.Errors.First().Description);
                        }
                        //Console.WriteLine("alice created");
                    }
                    else
                    {
                        //Console.WriteLine("alice already exists");
                    }
                }
            }

            //Console.WriteLine("Done seeding database.");
            //Console.WriteLine();
        }
Ejemplo n.º 3
0
        private async Task CreateAccount(CreateAccount command)
        {
            using (var context = Context.CreateScope())
            {
                var userManager = context.ServiceProvider.GetRequiredService <UserManager <HostelUser> >();
                var payload     = command.Payload;
                var response    = new Dictionary <string, string>();
                try
                {
                    var user = new HostelUser
                    {
                        UserName             = payload["Email"],
                        Email                = payload["Email"],
                        PhoneNumber          = payload["Phone"],
                        EmailConfirmed       = true,
                        PhoneNumberConfirmed = true,
                        TwoFactorEnabled     = false
                    };
                    var created = await userManager.CreateAsync(user, payload["Password"]);

                    if (created.Succeeded)
                    {
                        var userClaims = new List <Claim>();
                        var userRole   = payload["Role"];
                        userClaims.Add(new Claim("role", userRole));
                        userClaims.Add(new Claim("PreferredUserName", payload["Email"]));
                        var claim = await userManager.AddClaimsAsync(user, userClaims);

                        if (!claim.Succeeded)
                        {
                            await userManager.DeleteAsync(user);

                            response["Success"] = "false";
                            response["Errors"]  = string.Join(", ", claim.Errors);
                            response["Message"] = "Your account created was aborted";
                        }
                        else
                        {
                            response["Success"] = "true";
                            response["Errors"]  = string.Join(", ", created.Errors);
                            response["Message"] = "Your account created successfully!!";
                        }
                    }
                    else
                    {
                        response["Success"] = "false";
                        response["Errors"]  = string.Join(", ", created.Errors);
                        response["Message"] = "Your account was not created";
                    }
                }
                catch (Exception e)
                {
                    response["Success"] = "false";
                    response["Errors"]  = e.Message;
                    response["Message"] = e.Message;
                }
                var @event = new MassTransitEvent("AccountCreated", command.Commander, command.CommandId, response);
                await SendToQueue(@event);

                await Self.GracefulStop(TimeSpan.FromSeconds(10));
            }
        }