예제 #1
0
        protected override void NotifyUI(ICommand command, HandlerResult result)
        {
            var mEvent = new MassTransitEvent(command.Commander, command.CommandId, result);

            PustToUIQueue(mEvent, command.ReplyToQueue);
            base.NotifyUI(command, result);
        }
예제 #2
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));
        }
예제 #3
0
        private async Task AddHostelClaim(AddHostelClaim 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 = await userManager.FindByEmailAsync(payload["Email"]);

                    if (user != null)
                    {
                        var userClaims = new List <Claim>();
                        var userHostel = payload["Hostel"];
                        userClaims.Add(new Claim("Hostel", userHostel));
                        var claim = await userManager.AddClaimsAsync(user, userClaims);

                        if (!claim.Succeeded)
                        {
                            response["Created"] = "false";
                            response["Errors"]  = string.Join(", ", claim.Errors);
                            response["Message"] = "Your account created was aborted";
                        }
                    }
                    else
                    {
                        response["Created"] = "false";
                        response["Errors"]  = $"No user with '{payload["Email"]}' was found!";
                        response["Message"] = $"No user with '{payload["Email"]}' was found!";
                    }
                }
                catch (Exception e)
                {
                    response["Success"] = "false";
                    response["Errors"]  = e.Message;
                    response["Message"] = e.Message;
                }
                var @event = new MassTransitEvent("AddedHostelClaim", command.Commander, command.CommandId, response);
                await SendToPortalQueue(@event);

                await Self.GracefulStop(TimeSpan.FromSeconds(10));
            }
        }
예제 #4
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));
            }
        }