Ejemplo n.º 1
0
        public async Task <ActionResult> CreateDatabase(string database)
        {
            await _databaseBuilder.createModulesDatabaseAsync(database);

            return(Ok());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Register(IndexViewModel mod)
        {
            Register     registerModel     = mod.Register;
            Organization organizationExist = await _organizationRepository.OraganizationExist(registerModel.DatabaseName);

            if (organizationExist == null)
            {
                var user = new ApplicationUser
                {
                    Email        = registerModel.Email,
                    DatabaseName = registerModel.DatabaseName,
                    Country      = registerModel.Country,
                    Language     = registerModel.Language,
                    UserName     = registerModel.UserName,
                    Organization = new Organization {
                        Name  = registerModel.DatabaseName,
                        Email = registerModel.Email
                    }
                };



                var result = await _userManager.CreateAsync(user, registerModel.Password);

                if (result.Succeeded)
                {
                    List <Task> tasks        = new List <Task>();
                    var         roleAdmin    = "Administrator";
                    var         roleEmployee = "Employee";
                    await _management.AddRoleToUserAsync(roleAdmin, user);

                    await _management.AddRoleToUserAsync(roleEmployee, user);

                    await _userManager.AddClaimAsync(user, new Claim("organization", user.DatabaseName));

                    await _userManager.AddClaimAsync(user, new Claim("organizationId", user.OrganizationId));

                    muserLogger.LogInformation("A user with a specifc roles : " + roleAdmin + " has Been Created");

                    var res = await _signInManager.PasswordSignInAsync(user.UserName, registerModel.Password,
                                                                       true, false);

                    if (res.Succeeded)
                    {
                        tasks.Add(_databaseBuilder.createModulesDatabaseAsync(registerModel.DatabaseName));
                        tasks.Add(Task.Run(() => _authenticationProvider.AddScheme(new AuthenticationScheme(registerModel.DatabaseName, registerModel.DatabaseName, typeof(CookieAuthenticationHandler)))));

                        ;

                        await Task.WhenAll(tasks);

                        using (var scope = _service.CreateScope())
                        {
                            var _sysServices = scope.ServiceProvider.GetRequiredService <IServiceCollection>();
                            var shema        = _sysServices.AddAuthentication()

                                               .AddCookie(registerModel.DatabaseName, o =>
                            {
                                o.ExpireTimeSpan    = TimeSpan.FromHours(1);
                                o.LoginPath         = new PathString("/store/{OrganizationName}");
                                o.Cookie.Name       = registerModel.DatabaseName + " CustomerCookie";
                                o.SlidingExpiration = true;
                            });
                        }
                        return(RedirectToAction("System", "App"));
                    }
                }
                var errors = result.Errors.ToList();
                foreach (var el in errors)
                {
                    ModelState.AddModelError("", el.Code);
                }
            }
            else
            {
                ModelState.AddModelError("", "This Database Name is used");
            }

            return(View());
        }