Exemple #1
0
        public async Task <IActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                var      newUser    = (User)model;
                UserGuid usg        = new UserGuid();
                string   guideValue = "";
                var      result     = await RepositoryBuilder.AuthRepository.ActionQueueAsync(async i =>
                {
                    User user = await i.GetUserByEmailAsync(model.Email, false);
                    if (user == null)
                    {
                        User nConfirmUs = await i.GetUserByEmailAsync(model.Email, false, false);
                        if (nConfirmUs != null)
                        {
                            await i.DeleteUserGuideInUserIdAsync(nConfirmUs.Id);
                            await i.DeleteObjAsync(nConfirmUs.Id);
                            await i.SaveChangesAsync();
                        }

                        PasswdHesh.SetHeshContSalt(newUser, newUser.Password);
                        await i.AddObjAsync(newUser);

                        usg.UserId = newUser.Id;
                        Guid uguid = Guid.NewGuid();
                        guideValue = uguid.ToString();
                        PasswdHesh.SetHeshContSalt(usg, guideValue);
                        await i.AddUserGuideAsync(usg);

                        return(true);
                    }
                    else
                    {
                        ModelState.AddModelError("err", "Такой пользователь уже существует!");
                        return(false);
                    }
                }, true);

                if (result)
                {
                    var task = MailSender.SendMessage(
                        newUser.Email,
                        "Подтверждение почты для учётной записи.",
                        $"https://{HttpContext.Request.Host.Value.ToString()}/Account/AccountConfirm?id={usg.Id}&guid={guideValue}".TegLinq());

                    return(GetHelloView(new MsgVue("В течении 5 минут на указанную почту поступит письмо для подтверждения аккаунта!")));
                }
                else
                {
                    return(GetHelloView(new MsgVue("Не правильно введены данные", ModelState.Root.Children)));
                }
            }

            return(GetHelloView(new MsgVue("Не правильно введены данные. Дополнительная информация в форме регистрации!", ModelState.Values)));
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity <Order>()
            .HasOne(o => o.Courier)
            .WithMany(u => u.CourierOrders)
            .HasForeignKey(o => o.CourierId);

            modelBuilder.Entity <OrderProduct>()
            .HasKey(t => new { t.OrderId, t.ProductId });

            modelBuilder.Entity <OrderProduct>()
            .HasOne(sc => sc.Order)
            .WithMany(s => s.OrderProduct)
            .HasForeignKey(sc => sc.OrderId);

            modelBuilder.Entity <OrderProduct>()
            .HasOne(sc => sc.Product)
            .WithMany(s => s.OrderProduct)
            .HasForeignKey(sc => sc.ProductId);

            RoleMaster rm = new RoleMaster();

            Role[] roles = rm.GetRoles();

            string passwd = "qweqwe";

            User[] uss =
            {
                new User()
                {
                    Id     = 1,
                    Email  = "*****@*****.**",
                    RoleId = roles.FirstOrDefault(i => i.Name == "Администратор").Id,
                    Active = true
                },
                new User()
                {
                    Id     = 2,
                    Email  = "*****@*****.**",
                    RoleId = roles.FirstOrDefault(i => i.Name == "Пользователь").Id,
                    Active = true
                },
                new User()
                {
                    Id     = 3,
                    Email  = "*****@*****.**",
                    RoleId = roles.FirstOrDefault(i => i.Name == "Пользователь").Id,
                    Active = true
                },
                new User()
                {
                    Id     = 4,
                    Email  = "*****@*****.**",
                    RoleId = roles.FirstOrDefault(i => i.Name == "Курьер").Id,
                    Active = true
                },
                new User()
                {
                    Id     = 5,
                    Email  = "*****@*****.**",
                    RoleId = roles.FirstOrDefault(i => i.Name == "Курьер").Id,
                    Active = true
                }
            };

            PasswdHesher <User> hesher = new PasswdHesher <User>();

            for (int i = 0; i < uss.Length; i++)
            {
                hesher.SetHeshContSalt(uss[i], passwd);
            }

            modelBuilder.Entity <Role>().HasData(roles);
            modelBuilder.Entity <User>().HasData(uss);

            base.OnModelCreating(modelBuilder);
        }