Esempio n. 1
0
      public async Task<ActionResult> Create([Bind(Include = "ID,Name,Visibility")] Game game)
      {
         if (ModelState.IsValid)
         {
            var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this.db));

            var appUser = await manager.FindByIdAsync(this.User.Identity.GetUserId());

            db.Games.Add(game);

            await manager.AddClaimAsync(appUser.Id, new Claim("GameMembership", game.ID.ToString()));
            await manager.AddClaimAsync(appUser.Id, new Claim("GameOwnership", game.ID.ToString()));
            await manager.AddClaimAsync(appUser.Id, new Claim("GameMaster", game.ID.ToString()));

            var membership = new GameMembership()
            {
               Game = game,
               ApplicationUser = appUser,
               Roles = "Owner",
            };
            db.GameMemberships.Add(membership);
            await db.SaveChangesAsync();

            return RedirectToAction("Index");
         }

         return View(game);
      }
Esempio n. 2
0
 public async Task GetUserClaimTest()
 {
     var db = UnitTestHelper.CreateDefaultDb();
     var manager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(db));
     var user = new IdentityUser("u1");
     var result = await manager.CreateAsync(user);
     UnitTestHelper.IsSuccess(result);
     Assert.NotNull(user);
     var claims = new[]
     {
         new Claim("c1", "v1"),
         new Claim("c2", "v2"),
         new Claim("c3", "v3")
     };
     foreach (Claim c in claims)
     {
         UnitTestHelper.IsSuccess(await manager.AddClaimAsync(user.Id, c));
     }
     var userClaims = new List<Claim>(await manager.GetClaimsAsync(user.Id));
     Assert.Equal(3, userClaims.Count);
     foreach (Claim c in claims)
     {
         Assert.True(userClaims.Exists(u => u.Type == c.Type && u.Value == c.Value));
     }
 }
        public async Task ClaimsIdentityTest()
        {
            var db = UnitTestHelper.CreateDefaultDb();
            var manager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(db));
            var role = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(db));
            var user = new IdentityUser("Hao");
            UnitTestHelper.IsSuccess(await manager.CreateAsync(user));
            UnitTestHelper.IsSuccess(await role.CreateAsync(new IdentityRole("Admin")));
            UnitTestHelper.IsSuccess(await role.CreateAsync(new IdentityRole("Local")));
            UnitTestHelper.IsSuccess(await manager.AddToRoleAsync(user.Id, "Admin"));
            UnitTestHelper.IsSuccess(await manager.AddToRoleAsync(user.Id, "Local"));
            Claim[] userClaims =
            {
                new Claim("Whatever", "Value"),
                new Claim("Whatever2", "Value2")
            };
            foreach (var c in userClaims)
            {
                UnitTestHelper.IsSuccess(await manager.AddClaimAsync(user.Id, c));
            }

            var identity = await manager.CreateIdentityAsync(user, "test");
            var claimsFactory = manager.ClaimsIdentityFactory as ClaimsIdentityFactory<IdentityUser, string>;
            Assert.NotNull(claimsFactory);
            var claims = identity.Claims;
            Assert.NotNull(claims);
            Assert.True(
                claims.Any(c => c.Type == claimsFactory.UserNameClaimType && c.Value == user.UserName));
            Assert.True(claims.Any(c => c.Type == claimsFactory.UserIdClaimType && c.Value == user.Id));
            Assert.True(claims.Any(c => c.Type == claimsFactory.RoleClaimType && c.Value == "Admin"));
            Assert.True(claims.Any(c => c.Type == claimsFactory.RoleClaimType && c.Value == "Local"));
            Assert.True(
                claims.Any(
                    c =>
                        c.Type == ClaimsIdentityFactory<IdentityUser>.IdentityProviderClaimType &&
                        c.Value == ClaimsIdentityFactory<IdentityUser>.DefaultIdentityProviderClaimValue));
            foreach (var cl in userClaims)
            {
                Assert.True(claims.Any(c => c.Type == cl.Type && c.Value == cl.Value));
            }
        }
      public async Task<int> SyncMembershipsAndClaims([FromBody]Fixit fixit)
      {
         var userName = fixit.UserName;

         var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this.db));

         var query = db.GameMemberships.Include(mem => mem.Game).Include(mem => mem.ApplicationUser);

         if (!string.IsNullOrEmpty(userName) && !userName.Equals("$all", StringComparison.InvariantCultureIgnoreCase))
         {
            query = query.Where(mem => mem.ApplicationUser.DisplayName == userName);
         }

         var memberships = await query.ToListAsync();
         int membershipsFixed = 0;
         foreach (var membershipGroup in memberships.GroupBy(m => m.ApplicationUser))
         {
            var user = membershipGroup.Key;
            var claims = await manager.GetClaimsAsync(user.Id);

            foreach (var membership in membershipGroup)
            {
               bool wasFixed = false;
               if (!claims.Where(c => c.Type == "GameMembership").Any(c => c.Value == membership.GameID.ToString()))
               {
                  var result = await manager.AddClaimAsync(user.Id, new Claim("GameMembership", membership.GameID.ToString()));
                  if (!result.Succeeded)
                  {
                     Trace.WriteLine(string.Format("Error creating GameMembership claim for user {0} for game {1}: errors {2}", user.Id, membership.GameID, 
                        string.Join(", ", result.Errors)));
                  }
                  else
                  {
                     wasFixed = true;
                  }
               }
               if (membership.Roles.Contains("Owner"))
               {
                  if (!claims.Where(c => c.Type == "GameOwnership").Any(c => c.Value == membership.GameID.ToString()))
                  {
                     var result = await manager.AddClaimAsync(user.Id, new Claim("GameOwnership", membership.GameID.ToString()));
                     if (!result.Succeeded)
                     {
                        Trace.WriteLine(string.Format("Error creating GameOwnership claim for user {0} for game {1}: errors {2}", user.Id, membership.GameID,
                           string.Join(", ", result.Errors)));
                     }
                     else
                     {
                        wasFixed = true;
                     }
                  }
               }
               if (membership.Roles.Contains("Gamemaster"))
               {
                  if (!claims.Where(c => c.Type == "GameMaster").Any(c => c.Value == membership.GameID.ToString()))
                  {
                     var result = await manager.AddClaimAsync(user.Id, new Claim("GameMaster", membership.GameID.ToString()));
                     if (!result.Succeeded)
                     {
                        Trace.WriteLine(string.Format("Error creating GameMaster claim for user {0} for game {1}: errors {2}", user.Id, membership.GameID,
                           string.Join(", ", result.Errors)));
                     }
                     else
                     {
                        wasFixed = true;
                     }
                  }
               }

               if (wasFixed)
               {
                  membershipsFixed++;
               }
            }
         }

         return membershipsFixed;
      }
        public async Task OnPostCreateLogins()
        {
            //var info = await _signInManager.GetExternalLoginInfoAsync();

            if (!await _roleManager.RoleExistsAsync("BasicUser"))
            {
                await _roleManager.CreateAsync(new IdentityRole("BasicUser"));
            }
            if (!await _roleManager.RoleExistsAsync("Admin"))
            {
                await _roleManager.CreateAsync(new IdentityRole("Admin"));
            }
            if (!await _roleManager.RoleExistsAsync("Superadmin"))
            {
                await _roleManager.CreateAsync(new IdentityRole("Superadmin"));
            }

            var user = await _userManager.FindByNameAsync("*****@*****.**");

            //var result = await _userManager.CreateAsync(user);
            //var result = await _userManager.AddLoginAsync(user, info);
            if (user == null)
            {
                ApplicationUser au = new ApplicationUser()
                {
                    UserName = "******", Email = "*****@*****.**"
                };

                var result = await _userManager.CreateAsync(au, "abCD$$123");

                user = await _userManager.FindByNameAsync("*****@*****.**");
            }
            if (user != null)
            {
                var result = await _userManager.AddToRoleAsync(user, "BasicUser");

                result = await _userManager.AddToRoleAsync(user, "Admin");

                result = await _userManager.AddToRoleAsync(user, "Superadmin");

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_EndDate", "01/01/2070"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Admin_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Admin_EndDate", "01/01/2070"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Superadmin_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Superadmin_EndDate", "01/01/2070"));
            }

            user = await _userManager.FindByNameAsync("*****@*****.**");

            if (user == null)
            {
                ApplicationUser au = new ApplicationUser()
                {
                    UserName = "******",
                    Email    = "*****@*****.**"
                };

                var result = await _userManager.CreateAsync(au, "abCD$$123");

                user = await _userManager.FindByNameAsync("*****@*****.**");
            }
            if (user != null)
            {
                var result = await _userManager.AddToRoleAsync(user, "BasicUser");

                result = await _userManager.AddToRoleAsync(user, "Admin");

                result = await _userManager.AddToRoleAsync(user, "Superadmin");

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_EndDate", "01/01/2070"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Admin_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Admin_EndDate", "01/01/2070"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Superadmin_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Superadmin_EndDate", "01/01/2070"));
            }

            user = await _userManager.FindByNameAsync("*****@*****.**");

            if (user == null)
            {
                ApplicationUser au = new ApplicationUser()
                {
                    UserName = "******",
                    Email    = "*****@*****.**"
                };

                var result = await _userManager.CreateAsync(au, "abCD$$123");

                user = await _userManager.FindByNameAsync("*****@*****.**");
            }
            if (user != null)
            {
                var result = await _userManager.AddToRoleAsync(user, "BasicUser");

                result = await _userManager.AddToRoleAsync(user, "Admin");

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_EndDate", "01/01/2070"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Admin_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("Admin_EndDate", "01/01/2070"));
            }

            user = await _userManager.FindByNameAsync("*****@*****.**");

            if (user == null)
            {
                ApplicationUser au = new ApplicationUser()
                {
                    UserName = "******",
                    Email    = "*****@*****.**"
                };

                var result = await _userManager.CreateAsync(au, "abCD$$123");

                user = await _userManager.FindByNameAsync("*****@*****.**");
            }
            if (user != null)
            {
                var result = await _userManager.AddToRoleAsync(user, "BasicUser");

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_StartDate", "01/01/2000"));

                result = await _userManager.AddClaimAsync(user, new System.Security.Claims.Claim("BasicUser_EndDate", "01/01/2070"));
            }

            //----------------------------------------------------------

            _context.Database.ExecuteSqlRaw("TRUNCATE TABLE NavBarMenuItems");

            #region Parent Items

            int menuItemOrder = 0;

            NavBarMenuItem mmMyInfo = new NavBarMenuItem()
            {
                MenuDisplayName = "My Info",
                ParentMenuId    = 0,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mmMyInfo);
            _context.SaveChanges();

            NavBarMenuItem mmAdmin = new NavBarMenuItem()
            {
                MenuDisplayName = "Admin",
                ParentMenuId    = 0,
                UserPolicy      = "AdminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mmAdmin);
            _context.SaveChanges();

            NavBarMenuItem mmSuperadmin = new NavBarMenuItem()
            {
                MenuDisplayName = "Superadmin",
                ParentMenuId    = 0,
                UserPolicy      = "SuperadminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mmSuperadmin);
            _context.SaveChanges();

            #endregion

            #region First Level Items

            menuItemOrder = 0;
            NavBarMenuItem mmBasicSubItem1 = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSubItem1",
                ParentMenuId    = mmMyInfo.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mmBasicSubItem1);
            _context.SaveChanges();

            NavBarMenuItem mmBasicSubItem2 = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSubItem2",
                ParentMenuId    = mmMyInfo.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mmBasicSubItem2);
            _context.SaveChanges();

            NavBarMenuItem mmBasicSubItem3 = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSubItem3",
                ParentMenuId    = mmMyInfo.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mmBasicSubItem3);
            _context.SaveChanges();

            //Admin
            menuItemOrder = 0;
            NavBarMenuItem mm = new NavBarMenuItem()
            {
                MenuDisplayName = "AdminSubItem1",
                ParentMenuId    = mmAdmin.MenuId,
                UserPolicy      = "AdminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "AdminSubItem2",
                ParentMenuId    = mmAdmin.MenuId,
                UserPolicy      = "AdminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "AdminSubItem3",
                ParentMenuId    = mmAdmin.MenuId,
                UserPolicy      = "AdminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            //Superadmin
            menuItemOrder = 0;
            mm            = new NavBarMenuItem()
            {
                MenuDisplayName = "SuperadminSubItem1",
                ParentMenuId    = mmSuperadmin.MenuId,
                UserPolicy      = "SuperadminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "SuperadminSubItem2",
                ParentMenuId    = mmSuperadmin.MenuId,
                UserPolicy      = "SuperadminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "SuperadminSubItem3",
                ParentMenuId    = mmSuperadmin.MenuId,
                UserPolicy      = "SuperadminPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            #endregion

            #region Second Level Items

            menuItemOrder = 0;
            mm            = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSub-SubItem1",
                ParentMenuId    = mmBasicSubItem1.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSub-SubItem2",
                ParentMenuId    = mmBasicSubItem1.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSub-SubItem3",
                ParentMenuId    = mmBasicSubItem1.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();

            mm = new NavBarMenuItem()
            {
                MenuDisplayName = "BasicSub-SubItem1",
                ParentMenuId    = mmBasicSubItem1.MenuId,
                UserPolicy      = "BasicUserPolicy",
                MenuURL         = "",
                CreatedDate     = DateTime.Now,
                ItemOrder       = menuItemOrder++
            };

            _context.NavBarMenuItems.Add(mm);
            _context.SaveChanges();


            #endregion



            int iii = 0;
        }
      public async Task<GameResult> Create([FromBody]GameResult result)
      {
         if (result == null)
         {
            throw new ArgumentNullException("game");
         }

         GameVisibility visibility;
         if (!Enum.TryParse(result.Visibility, out visibility))
         {
            throw new ArgumentException("game.Visibility is not valid");
         }

         var game = new Game()
         {
            Name = result.Name,
            Visibility = visibility,
         };

         var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this.db));

         var appUser = await manager.FindByIdAsync(this.User.Identity.GetUserId());

         db.Games.Add(game);

         await manager.AddClaimAsync(appUser.Id, new Claim("GameMembership", game.ID.ToString()));
         await manager.AddClaimAsync(appUser.Id, new Claim("GameOwnership", game.ID.ToString()));
         await manager.AddClaimAsync(appUser.Id, new Claim("GameMaster", game.ID.ToString()));

         var membership = new GameMembership()
         {
            Game = game,
            ApplicationUser = appUser,
            Roles = "Owner",
         };
         db.GameMemberships.Add(membership);
         await db.SaveChangesAsync();


         result.GameId = game.ID;

         return result;
      }
        public void Initialize()
        {
            _userDbContext.Database.Migrate();
            _configurationDbContext.Database.Migrate();
            _persistedGrantDbContext.Database.Migrate();

            _configurationDbContext.Database.BeginTransaction();

            try
            {
                if (!_userDbContext.Roles.Any(x => x.Name == "admin"))
                {
                    var role   = new IdentityRole("admin");
                    var result = _roleManager.CreateAsync(role).Result;
                    if (!result.Succeeded)
                    {
                        throw new Exception($"Ошибка добавления роли: {role.Name}");
                    }
                }

                if (!_userDbContext.Users.Any(x => x.UserName == "admin"))
                {
                    var user = _userManager.FindByNameAsync("admin").Result;
                    if (user == null)
                    {
                        user = new Account()
                        {
                            UserName = "******",
                            Email    = "*****@*****.**"
                        };

                        var userResult = _userManager.CreateAsync(user, "qwerty").Result;
                        if (!userResult.Succeeded)
                        {
                            throw new Exception($"Ошибка добавления пользователя: {user.UserName}");
                        }
                    }

                    if (!_userManager.IsInRoleAsync(user, "admin").Result)
                    {
                        var roleResult = _userManager.AddToRoleAsync(user, "admin").Result;
                        if (!roleResult.Succeeded)
                        {
                            throw new Exception($"Ошибка добавления пользователя {user.UserName} в роль admin");
                        }
                    }

                    var claims = new Claim[]
                    {
                        new Claim(JwtClaimTypes.NickName, "admin_nick"),
                        new Claim(JwtClaimTypes.Role, "admin"),
                        new Claim(JwtClaimTypes.Email, "*****@*****.**")
                    };

                    var userClaims   = _userManager.GetClaimsAsync(user).Result;
                    var claimsForAdd = claims.Except(userClaims);

                    foreach (var claim in claimsForAdd)
                    {
                        var claimResult = _userManager.AddClaimAsync(user, claim).Result;
                        if (!claimResult.Succeeded)
                        {
                            throw new Exception($"Ошбка добавления клейма {claim.Type} поьзователю {user.UserName}");
                        }
                    }
                }

                foreach (var identityResource in _config.GetIdentityResources())
                {
                    if (!_configurationDbContext.IdentityResources.Any(x => x.Name == identityResource.Name))
                    {
                        _configurationDbContext.IdentityResources.Add(identityResource.ToEntity());
                    }
                }
                _configurationDbContext.SaveChanges();

                foreach (var apiResource in _config.GetApiResources())
                {
                    if (!_configurationDbContext.ApiResources.Any(x => x.Name == apiResource.Name))
                    {
                        _configurationDbContext.ApiResources.Add(apiResource.ToEntity());
                    }
                }
                _configurationDbContext.SaveChanges();

                foreach (var client in _config.GetClients())
                {
                    if (!_configurationDbContext.Clients.Any(x => x.ClientId == client.ClientId))
                    {
                        _configurationDbContext.Clients.Add(client.ToEntity());
                    }
                }
                _configurationDbContext.SaveChanges();
            }
            catch
            {
                _configurationDbContext.Database.RollbackTransaction();
                throw;
            }

            _configurationDbContext.Database.CommitTransaction();
        }
Esempio n. 8
0
 public async Task <bool> AddRoleAsync(ApplicationUser user, string roleName)
 {
     return((await userManager
             .AddClaimAsync(user, new Claim(Policies.RoleClaimTypeValue, roleName)))
            .Succeeded);
 }
Esempio n. 9
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });

            using IServiceScope scope = app.ApplicationServices.CreateScope();
            IServiceProvider     scopeServiceProvider = scope.ServiceProvider;
            ApplicationDbContext context = scopeServiceProvider.GetRequiredService <ApplicationDbContext>();

            if (context != null && context.Database.GetPendingMigrations().Any())
            {
                context.Database.Migrate();

                if (!context.Users.Any())
                {
                    const string defaultAdminUserName = "******";
                    const string defaultAdminPassword = "******";

                    UserManager <User> userManager = scopeServiceProvider.GetRequiredService <UserManager <User> >();
                    RoleManager <Role> roleManager = scopeServiceProvider.GetRequiredService <RoleManager <Role> >();
                    User admin = userManager.FindByNameAsync(Configuration[defaultAdminUserName]).GetAwaiter().GetResult();
                    if (admin == null)
                    {
                        Role adminRoleName = new Role {
                            Name = "admin"
                        };
                        Role userRoleName = new Role {
                            Name = "user"
                        };
                        roleManager.CreateAsync(adminRoleName).GetAwaiter().GetResult();
                        roleManager.CreateAsync(userRoleName).GetAwaiter().GetResult();
                        admin = new User {
                            UserName = Configuration[defaultAdminUserName], Email = Configuration[defaultAdminUserName], FirstName = "مدیر", LastName = "سایت", EmailConfirmed = true, LockoutEnabled = false
                        };
                        IdentityResult identityResult = userManager.CreateAsync(admin, Configuration[defaultAdminPassword]).GetAwaiter().GetResult();
                        userManager.AddToRoleAsync(admin, "admin").GetAwaiter().GetResult();
                        userManager.AddToRoleAsync(admin, "user").GetAwaiter().GetResult();
                        Claim adminClaimName = new Claim(ClaimTypes.Role, "admin");
                        userManager.AddClaimAsync(admin, adminClaimName).GetAwaiter().GetResult();
                        roleManager.AddClaimAsync(adminRoleName, adminClaimName).GetAwaiter().GetResult();
                    }
                }
            }
        }
Esempio n. 10
0
        public async Task <IActionResult> OnPostConfirmationAsync(string?returnUrl = null)
        {
            returnUrl ??= Url.Content("~/authentication/login");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }
            string?normalizedDisplayName = Input.DisplayName?.ToUpper();

            if (await _context.Profiles.FirstOrDefaultAsync(x => x.NormalizedDisplayName == normalizedDisplayName) != null)
            {
                ModelState.AddModelError(string.Empty, "Display name is already taken.");
            }
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName = Input.Email,
                    Email    = Input.Email,
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (!result.Succeeded)
                    {
                        foreach (var error in result.Errors)
                        {
                            if (error.Code != "DuplicateUserName")
                            {
                                ModelState.AddModelError(string.Empty, error.Description);
                            }
                        }
                        return(Page());
                    }
                    await _userManager.AddClaimAsync(user, new Claim("display_name", Input.DisplayName));

                    _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);

                    // If account confirmation is required, we need to show the link if we don't have a real email sender
                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("./RegisterConfirmation", new { Email = Input.Email }));
                    }

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    var userId = await _userManager.GetUserIdAsync(user);

                    var profile = new Profile
                    {
                        DisplayName           = Input.DisplayName,
                        NormalizedDisplayName = normalizedDisplayName,
                        Id         = user.Id,
                        IsVerified = false,
                    };
                    await _userManager.AddClaimAsync(user, new Claim("is_verified", "false"));

                    _context.Profiles.Add(profile);
                    _context.SaveChanges();
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = userId, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Esempio n. 11
0
        private async Task InBuildUserAsync()
        {
            RegistrationViewModel model = new RegistrationViewModel
            {
                FirstName      = "Dev",
                MiddleName     = "Vikram",
                LastName       = "Sharma",
                Email          = "*****@*****.**",
                Password       = "******",
                Department     = 0,
                Grade          = 0,
                HQ             = 0,
                Pancard        = "Dummy",
                DOJ            = DateTime.Now,
                DOB            = DateTime.Now,
                Desigination   = 0,
                CustomUserName = "******",
                PasswordRaw    = "dev@123",
                IsEnabled      = true
            };

            string userName       = model.FirstName.Substring(0, 1).ToLower() + model.MiddleName.Substring(0, 1).ToLower() + model.LastName.Replace(" ", "").ToLower();
            int    iUserNameCount = _appDbContext.Users.Where(u => u.UserName.Contains(userName)).ToList().Count();

            if (iUserNameCount > 0)
            {
                iUserNameCount += 1;
                userName       += iUserNameCount.ToString();
            }

            model.CustomUserName = userName;
            model.PasswordRaw    = model.Password;

            var userIdentity = _mapper.Map <AppUser>(model);
            var result       = await _userManager.CreateAsync(userIdentity, model.Password);

            var user = await _userManager.FindByIdAsync(userIdentity.Id);

            #region "Create User, Roles & Add Role Claims"
            //User: Data in Roles Table
            var accountManagerRole = await _roleManager.FindByNameAsync(Permissions.Roles.USER);

            if (accountManagerRole == null)
            {
                accountManagerRole = new IdentityRole(Permissions.Roles.USER);
                await _roleManager.CreateAsync(accountManagerRole);
            }

            ////Add UserClaims
            //await _userManager.AddClaimAsync(user, new Claim(CustomClaimTypes.Permission, Permissions.Admins.CRUD));
            await _userManager.AddClaimAsync(user, new Claim(CustomClaimTypes.Permission, Permissions.Users.Add));

            await _userManager.AddClaimAsync(user, new Claim(CustomClaimTypes.Permission, Permissions.Users.Edit));

            await _userManager.AddClaimAsync(user, new Claim(CustomClaimTypes.Permission, Permissions.Users.Delete));

            await _userManager.AddClaimAsync(user, new Claim(CustomClaimTypes.Permission, Permissions.Users.View));

            //await _roleManager.AddClaimAsync(accountManagerRole, new Claim(CustomClaimTypes.Permission, Permissions.Users.Add));
            //await _roleManager.AddClaimAsync(accountManagerRole, new Claim(CustomClaimTypes.Permission, Permissions.Users.Edit));
            //await _roleManager.AddClaimAsync(accountManagerRole, new Claim(CustomClaimTypes.Permission, Permissions.Users.View));

            if (!await _userManager.IsInRoleAsync(user, accountManagerRole.Name))
            {
                await _userManager.AddToRoleAsync(user, accountManagerRole.Name);
            }
            #endregion

            //if (!result.Succeeded) return new BadRequestObjectResult(Errors.AddErrorsToModelState(result, ModelState));

            //Extra Tables
            ContactResourseViewModel contact = new ContactResourseViewModel
            {
                ID              = Guid.NewGuid().ToString(),
                RefTableId      = user.Id,
                RefTableName    = Constants.ReferenceTableNames.EMPLOYEE,
                Address         = "Dev User Address",
                State           = "Dev User State",
                City            = "Dev User City",
                PinCode         = "400086",
                MobileNumber    = "9029718964",
                ResidenceNumber = "9090909090"
            };

            var contactData = _mapper.Map <ContactResourseViewModel, Data.ContactResourse>(contact);
            _appDbContext.ContactResourse.Add(contactData);

            await _appDbContext.SaveChangesAsync();
        }
Esempio n. 12
0
        public async Task Seed()
        {
            // create the database contexts and apply any pending migrations
            if (_context.Database.GetPendingMigrations().Any())
            {
                _context.Database.Migrate();
            }

            if (_identityServerConfigContext.Database.GetPendingMigrations().Any())
            {
                _identityServerConfigContext.Database.Migrate();
            }

            if (_identityServerPersistedGrantContext.Database.GetPendingMigrations().Any())
            {
                _identityServerPersistedGrantContext.Database.Migrate();
            }
            if ((await _roleManager.FindByNameAsync("AdminUserClassicRole")) == null)
            {
                var addedRole = new DbRole {
                    Name = "AdminUserClassicRole", Description = "classic style admin role"
                };
                var addRoleResult = await _roleManager.CreateAsync(addedRole);

                if (addRoleResult.Succeeded)
                {
                    await _roleManager.AddClaimAsync(addedRole, new Claim(ClaimTypes.Role, "AdminUSerClassicRoleClaim"));
                }
            }

            string emailUsername = "******";
            DbUser user          = await _userManager.FindByNameAsync(emailUsername);

            if (user == null)
            {
                var result = await _userManager.CreateAsync(new DbUser
                {
                    UserName         = emailUsername,
                    DateOfBirth      = new DateTime(1970, 1, 1),
                    Email            = emailUsername,
                    Firstname        = "test",
                    LockoutEnabled   = true,
                    Surname          = "user",
                    EmailConfirmed   = true,
                    TwoFactorEnabled = false
                }, "Pa$$word1");


                if (result.Succeeded)
                {
                    user = await _userManager.FindByNameAsync(emailUsername);

                    await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, MusicStoreConstants.Roles.AdminUser));

                    await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, MusicStoreConstants.Roles.TestUser));

                    await _userManager.AddClaimAsync(user, new Claim(MusicStoreConstants.CLaimTypes.MusicStoreApiReadAccess, "true"));

                    await _userManager.AddClaimAsync(user, new Claim(MusicStoreConstants.CLaimTypes.MusicStoreApiWriteAccess, "true"));

                    var addRoleResult = await _userManager.AddToRoleAsync(user, "AdminUserClassicRole");
                }
                else
                {
                    _logger.LogError("Error adding user - error: " + string.Join(", ", result.Errors.Select(e => e.Description)));
                }
            }

            if (!_identityServerConfigContext.Clients.Any())
            {
                IdentityServerConfigUrls urls = new IdentityServerConfigUrls()
                {
                    AngularAppClientUri = "https://localhost:44350",
                    MvcClientUri        = "https://localhost:44357"
                };

                string angularClientUrl = this._configuration.GetValue <string>("AngularAppClientUrl");
                if (!string.IsNullOrWhiteSpace(angularClientUrl))
                {
                    urls.AngularAppClientUri = angularClientUrl;
                }

                // set url for the server side mvc app "/samples/oauthtest"
                string mvcAppClientUrl = this._configuration.GetValue <string>("MvcAppClientUrl");
                if (!string.IsNullOrWhiteSpace(mvcAppClientUrl))
                {
                    urls.MvcClientUri = mvcAppClientUrl;
                }

                foreach (var client in IdentityServerClients.GetClients(urls))
                {
                    _identityServerConfigContext.Clients.Add(client.ToEntity());
                }
                _identityServerConfigContext.SaveChanges();
            }

            if (!_identityServerConfigContext.IdentityResources.Any())
            {
                foreach (var resource in IdentityServerResources.GetIdentityResources())
                {
                    _identityServerConfigContext.IdentityResources.Add(resource.ToEntity());
                }
                _identityServerConfigContext.SaveChanges();
            }

            if (!_identityServerConfigContext.ApiResources.Any())
            {
                foreach (var resource in IdentityServerResources.GetApiResources())
                {
                    _identityServerConfigContext.ApiResources.Add(resource.ToEntity());
                }
                _identityServerConfigContext.SaveChanges();
            }

            ContentCreator contentCreator = new ContentCreator(_context);

            if (await _context.AlbumGroups.CountAsync() == 0)
            {
                //create default groups
                await _context.AlbumGroups.AddAsync(new DbAlbumGroup
                {
                    Key        = "FEATURED_ALBUMS",
                    Name       = "Featured albums",
                    CreatedUtc = DateTime.UtcNow,
                    UpdatedUtc = DateTime.UtcNow
                });

                await _context.AlbumGroups.AddAsync(new DbAlbumGroup
                {
                    Key        = "NEW_ALBUMS",
                    Name       = "New albums",
                    CreatedUtc = DateTime.UtcNow,
                    UpdatedUtc = DateTime.UtcNow
                });

                await _context.AlbumGroups.AddAsync(new DbAlbumGroup
                {
                    Key        = "BESTSELLING_ALBUMS",
                    Name       = "Bestselling albums",
                    CreatedUtc = DateTime.UtcNow,
                    UpdatedUtc = DateTime.UtcNow
                });

                await _context.SaveChangesAsync();
            }

            if (await _context.Genres.CountAsync() == 0)
            {
                await contentCreator.CreateGenres("Rock", "Pop", "Indie", "Funk", "Grunge", "Electronic", "Punk", "Alternative");
            }

            if (await _context.Artists.CountAsync() == 0)
            {
                await contentCreator.CreateSeedContent();
            }
        }
Esempio n. 13
0
        public async Task <bool> UpdateUserAsync(UserDTO user)
        {
            //check the user on null before go on
            if (user == null)
            {
                return(false);
            }

            var dbUser = await _dbContext.Users
                         .FirstOrDefaultAsync(u => u.Id == user.Id);

            //TODO: validate user.Email
            if (dbUser == null)
            {
                return(false);
            }
            if (String.IsNullOrEmpty(user.Email))
            {
                return(false);
            }

            dbUser.Email = user.Email;

            if (user.Token != null && user.Token.Token != null && user.Token.Token.Length > 0)
            {
                // Add token to the user in the database
                dbUser.Token        = user.Token.Token;
                dbUser.TokenExpires = user.Token.TokenExpires;

                var newTokenClaim   = new Claim(ClaimType.Token, user.Token.Token);
                var newTokenExpires = new Claim(ClaimType.TokenExpires,
                                                user.Token.TokenExpires.ToString("yyyy-MM-dd hh:mm:ss"));
                var userClaims = await _userManager.GetClaimsAsync(dbUser);

                var currentTokenClaim = userClaims.SingleOrDefault(
                    c => c.Type.Equals(ClaimType.Token));
                var currentTokenClaimExpires = userClaims.SingleOrDefault(
                    c => c.Type.Equals(ClaimType.TokenExpires));

                if (currentTokenClaim == null)
                {
                    await _userManager.AddClaimAsync(dbUser, newTokenClaim);
                }
                else
                {
                    await _userManager.ReplaceClaimAsync(dbUser, currentTokenClaim, newTokenClaim);
                }

                if (currentTokenClaimExpires == null)
                {
                    await _userManager.AddClaimAsync(dbUser, newTokenExpires);
                }
                else
                {
                    await _userManager.ReplaceClaimAsync(dbUser, currentTokenClaimExpires, newTokenExpires);
                }
            }

            var isAdmin = await _userManager.IsInRoleAsync(dbUser, Roles.Admin);

            var adminClaim = new Claim(Roles.Admin, "true");

            if (isAdmin && !user.IsAdmin)
            {   // Remove Admin role
                await _userManager.RemoveFromRoleAsync(dbUser, Roles.Admin);

                //Remove Admin claim
                await _userManager.RemoveClaimAsync(dbUser, adminClaim);
            }
            else if (!isAdmin && user.IsAdmin)
            {   // Add Admin role
                await _userManager.AddToRoleAsync(dbUser, Roles.Admin);

                // Add Admin claim
                await _userManager.AddClaimAsync(dbUser, adminClaim);
            }

            var result = await _dbContext.SaveChangesAsync();

            return(result >= 0); // if result is 0 then anyway we return true
        }
        public static async Task SeedUserAsync(UserManager <AppUser> userManager, RoleManager <AppRole> roleManager)
        {
            if (!userManager.Users.Any())
            {
                var users = new List <AppUser>
                {
                    new AppUser
                    {
                        DisplayName = "Normal",
                        Email       = "*****@*****.**",
                        UserName    = "******",
                        IsPayroll   = true,
                        Address     = new Address
                        {
                            FirstName = "Normal",
                            LastName  = "Client",
                            Building  = "ICT",
                            Room      = "2A",
                        }
                    },
                    new AppUser
                    {
                        DisplayName = "Admin",
                        Email       = "*****@*****.**",
                        UserName    = "******",
                        IsPayroll   = true
                    },
                    new AppUser
                    {
                        DisplayName = "NY Pizza",
                        Email       = "*****@*****.**",
                        UserName    = "******",
                        IsPayroll   = true
                    },
                    new AppUser
                    {
                        DisplayName = "Burger King",
                        Email       = "*****@*****.**",
                        UserName    = "******",
                        IsPayroll   = true
                    },
                    new AppUser
                    {
                        DisplayName = "McDonalds",
                        Email       = "*****@*****.**",
                        UserName    = "******",
                        IsPayroll   = true
                    }
                };

                var roles = new List <AppRole>
                {
                    new AppRole {
                        Name = "Admin"
                    },
                    new AppRole {
                        Name = "Manager"
                    },
                    new AppRole {
                        Name = "Member"
                    }
                };

                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, "Ny Pizza"),
                    new Claim(ClaimTypes.Name, "Burger King"),
                    new Claim(ClaimTypes.Name, "McDonalds"),
                };

                foreach (var role in roles)
                {
                    await roleManager.CreateAsync(role);
                }

                foreach (var user in users)
                {
                    await userManager.CreateAsync(user, "Pa$$w0rd");

                    await userManager.AddToRoleAsync(user, "Member");

                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddToRoleAsync(user, "Admin");
                    }
                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddToRoleAsync(user, "Manager");
                    }
                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddToRoleAsync(user, "Manager");
                    }
                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddToRoleAsync(user, "Manager");
                    }
                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddToRoleAsync(user, "Manager");
                    }

                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddClaimAsync(user, claims.FirstOrDefault(x => x.Value == "Ny Pizza"));
                    }
                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddClaimAsync(user, claims.FirstOrDefault(x => x.Value == "Burger King"));
                    }
                    if (user.Email == "*****@*****.**")
                    {
                        await userManager.AddClaimAsync(user, claims.FirstOrDefault(x => x.Value == "McDonalds"));
                    }
                }
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Generate default admin user / role
        /// </summary>
        private static async Task EnsureSeedIdentityData <TUser, TRole>(UserManager <TUser> userManager,
                                                                        RoleManager <TRole> roleManager, IdentityData identityDataConfiguration)
            where TUser : IdentityUser, new()
            where TRole : IdentityRole, new()
        {
            // adding roles from seed
            foreach (var r in identityDataConfiguration.Roles)
            {
                if (!await roleManager.RoleExistsAsync(r.Name))
                {
                    var role = new TRole
                    {
                        Name = r.Name
                    };

                    var result = await roleManager.CreateAsync(role);

                    if (result.Succeeded)
                    {
                        foreach (var claim in r.Claims)
                        {
                            await roleManager.AddClaimAsync(role, new System.Security.Claims.Claim(claim.Type, claim.Value));
                        }
                    }
                }
            }

            // adding users from seed
            foreach (var user in identityDataConfiguration.Users)
            {
                var identityUser = new TUser
                {
                    UserName       = user.Username,
                    Email          = user.Email,
                    EmailConfirmed = true
                };

                var userByUserName = await userManager.FindByNameAsync(user.Username);

                var userByEmail = await userManager.FindByEmailAsync(user.Email);

                // User is already exists in database
                if (userByUserName != default || userByEmail != default)
                {
                    continue;
                }

                // if there is no password we create user without password
                // user can reset password later, because accounts have EmailConfirmed set to true
                var result = !string.IsNullOrEmpty(user.Password)
                ? await userManager.CreateAsync(identityUser, user.Password)
                : await userManager.CreateAsync(identityUser);

                if (result.Succeeded)
                {
                    foreach (var claim in user.Claims)
                    {
                        await userManager.AddClaimAsync(identityUser, new System.Security.Claims.Claim(claim.Type, claim.Value));
                    }

                    foreach (var role in user.Roles)
                    {
                        await userManager.AddToRoleAsync(identityUser, role);
                    }
                }
            }
        }
Esempio n. 16
0
 public async Task <IdentityResult> AddClaimAsync(AppUser userIdentity, string roleName) =>
 await _userManager.AddClaimAsync(userIdentity, new Claim(ClaimTypes.Role, roleName));
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new IdentityUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        if (info.Principal.HasClaim(c => c.Type == ClaimTypes.GivenName))
                        {
                            await _userManager.AddClaimAsync(user,
                                                             info.Principal.FindFirst(ClaimTypes.GivenName));
                        }

                        if (info.Principal.HasClaim(c => c.Type == Claims.City))
                        {
                            await _userManager.AddClaimAsync(user,
                                                             info.Principal.FindFirst(Claims.City));
                        }

                        if (info.Principal.HasClaim(c => c.Type == ClaimTypes.StateOrProvince))
                        {
                            await _userManager.AddClaimAsync(user,
                                                             info.Principal.FindFirst(ClaimTypes.StateOrProvince));
                        }

                        if (info.Principal.HasClaim(c => c.Type == ClaimTypes.Country))
                        {
                            await _userManager.AddClaimAsync(user,
                                                             info.Principal.FindFirst(ClaimTypes.Country));
                        }
                        if (info.ProviderKey != null)
                        {
                            await _userManager.AddClaimAsync(user,
                                                             new Claim("stravaId", info.ProviderKey));
                        }

                        // Include the access token in the properties
                        var props = new AuthenticationProperties();
                        props.StoreTokens(info.AuthenticationTokens);
                        props.IsPersistent = true;

                        //await _signInManager.SignInAsync(user, isPersistent: false);
                        await _signInManager.SignInAsync(user, props, info.LoginProvider);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Esempio n. 18
0
        public static void Initialize(DbContext context, UserManager <User> userManager)
        {
            context.Database.EnsureCreated();

            #region Add Employees
            if (!context.Set <Employee>().Any())
            {
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Александр", SecondName = "Москвин", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 1, ManagerId = 10
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Ольга", SecondName = "Калатуша", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 1, ManagerId = 10
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Антон", SecondName = "Сапановский", Mail = "*****@*****.**", MaxRole = RoleType.Administrator, Rate = 1, ManagerId = 10, Leaves = new List <Leave>
                    {
                        new Leave()
                        {
                            StartDate = new DateTime(2019, 8, 22), EndDate = new DateTime(2019, 9, 9), TypeLeave = TypeLeave.Vacation
                        }
                    }
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Анна", SecondName = "Степакова", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 0.5, ManagerId = 10, Leaves = new List <Leave>
                    {
                        new Leave()
                        {
                            StartDate = new DateTime(2019, 9, 5), EndDate = new DateTime(2019, 9, 9), TypeLeave = TypeLeave.Training
                        },
                        new Leave()
                        {
                            StartDate = new DateTime(2019, 9, 11), EndDate = new DateTime(2019, 9, 14), TypeLeave = TypeLeave.Idle
                        }
                    }
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Дмитрий", SecondName = "Павлов", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 0.75, ManagerId = 10, Leaves = new List <Leave>
                    {
                        new Leave()
                        {
                            StartDate = new DateTime(2019, 9, 3), EndDate = new DateTime(2019, 9, 11), TypeLeave = TypeLeave.Idle
                        }
                    }
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Ольга", SecondName = "Гуляева", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 1, ManagerId = 10
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Павел", SecondName = "Костин", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 1, ManagerId = 10
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Михаил", SecondName = "Ворожба", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 1.25, ManagerId = 10
                });
                context.Set <Employee>().Add(new Employee()
                {
                    FirstName = "Юлия", SecondName = "Ильиных", Mail = "*****@*****.**", MaxRole = RoleType.Employee, Rate = 0.5, ManagerId = 10
                });

                context.Set <Employee>().Add(new Employee {
                    FirstName = "Татьяна", SecondName = "Елисеева", Mail = "*****@*****.**", MaxRole = RoleType.Manager, Rate = 1.25, ManagerId = null
                });

                context.SaveChanges();

                foreach (var employee in context.Set <Employee>())
                {
                    var user = new User
                    {
                        UserName   = employee.Mail,
                        Email      = employee.Mail,
                        EmployeeId = employee.Id
                    };

                    var result = userManager.CreateAsync(user, employee.Mail + "Password1").Result;
                    //Retrieves the name of the constant in the specified enumeration that has the specified value.
                    var role = Enum.GetName(typeof(RoleType), employee.MaxRole);

                    var resultAddRole = userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, role)).Result;
                    if (!(result.Succeeded && resultAddRole.Succeeded))
                    {
                        throw new ApplicationException("ERROR_INITIALIZE_DB");
                    }
                }
            }
            #endregion

            #region Add Projects
            if (!context.Set <Project>().Any())
            {
                context.Set <Project>().Add(new Project()
                {
                    Name = "LTRegistrator Frontend"
                });
                context.Set <Project>().Add(new Project()
                {
                    Name = "LTRegistrator Backend"
                });
                context.SaveChanges();
            }
            #endregion

            #region Add ProjectEmployees
            if (!context.Set <ProjectEmployee>().Any())
            {
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 1, EmployeeId = 10, Role = RoleType.Manager
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 2, EmployeeId = 10, Role = RoleType.Manager
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 1, EmployeeId = 2, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 1, EmployeeId = 4, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 1, EmployeeId = 5, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 1, EmployeeId = 6, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 2, EmployeeId = 1, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 2, EmployeeId = 3, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 1, EmployeeId = 3, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 2, EmployeeId = 7, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 2, EmployeeId = 8, Role = RoleType.Employee
                });
                context.Set <ProjectEmployee>().Add(new ProjectEmployee()
                {
                    ProjectId = 2, EmployeeId = 9, Role = RoleType.Employee
                });

                context.SaveChanges();
            }
            #endregion

            #region Add Tasks
            if (!context.Set <Task>().Any())
            {
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 2, EmployeeId = 1, Name = "LTRegistrator Backend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 1, EmployeeId = 2, Name = "LTRegistrator Frontend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 2, EmployeeId = 3, Name = "LTRegistrator Backend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 1, EmployeeId = 3, Name = "LTRegistrator Frontend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 1, EmployeeId = 4, Name = "LTRegistrator Frontend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 1, EmployeeId = 5, Name = "LTRegistrator Frontend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 1, EmployeeId = 6, Name = "LTRegistrator Frontend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 2, EmployeeId = 7, Name = "LTRegistrator Backend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 2, EmployeeId = 8, Name = "LTRegistrator Backend"
                });
                context.Set <Task>().Add(new Task()
                {
                    ProjectId = 2, EmployeeId = 9, Name = "LTRegistrator Backend"
                });
                context.SaveChanges();
            }
            #endregion

            #region Add TaskNotes
            if (!context.Set <TaskNote>().Any())
            {
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 1, Hours = 4, Day = new DateTime(2019, 9, 1)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 1, Hours = 2, Day = new DateTime(2019, 9, 2)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 1, Hours = 8, Day = new DateTime(2019, 9, 4)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 1, Hours = 8, Day = new DateTime(2019, 9, 6)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 1, Hours = 8, Day = new DateTime(2019, 9, 12)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 1, Hours = 10, Day = new DateTime(2019, 9, 14)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 10, Day = new DateTime(2019, 9, 2)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 8, Day = new DateTime(2019, 9, 4)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 4, Day = new DateTime(2019, 9, 6)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 6, Day = new DateTime(2019, 9, 7)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 5, Day = new DateTime(2019, 9, 10)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 11, Day = new DateTime(2019, 9, 13)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 2, Hours = 2, Day = new DateTime(2019, 9, 14)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 3, Hours = 5, Day = new DateTime(2019, 9, 11)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 3, Hours = 1, Day = new DateTime(2019, 9, 12)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 3, Hours = 10, Day = new DateTime(2019, 9, 13)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 3, Hours = 12, Day = new DateTime(2019, 9, 10)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 4, Hours = 12, Day = new DateTime(2019, 9, 12)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 4, Hours = 12, Day = new DateTime(2019, 9, 13)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 4, Hours = 12, Day = new DateTime(2019, 9, 14)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 5, Hours = 6, Day = new DateTime(2019, 9, 2)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 5, Hours = 8, Day = new DateTime(2019, 9, 3)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 5, Hours = 7, Day = new DateTime(2019, 9, 4)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 5, Hours = 13, Day = new DateTime(2019, 9, 10)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 5, Hours = 4, Day = new DateTime(2019, 9, 15)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 6, Hours = 10, Day = new DateTime(2019, 9, 1)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 6, Hours = 12, Day = new DateTime(2019, 9, 2)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 6, Hours = 14, Day = new DateTime(2019, 9, 12)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 6, Hours = 18, Day = new DateTime(2019, 9, 13)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 6, Hours = 10, Day = new DateTime(2019, 9, 14)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 1)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 2)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 3)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 4)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 5)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 6)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 7)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 8)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 7, Hours = 8, Day = new DateTime(2019, 9, 9)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 8, Hours = 2, Day = new DateTime(2019, 9, 1)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 8, Hours = 4, Day = new DateTime(2019, 9, 4)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 8, Hours = 6, Day = new DateTime(2019, 9, 5)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 8, Hours = 4, Day = new DateTime(2019, 9, 7)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 8, Hours = 3, Day = new DateTime(2019, 9, 9)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 8, Hours = 12, Day = new DateTime(2019, 9, 10)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 9, Hours = 12, Day = new DateTime(2019, 9, 5)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 9, Hours = 6, Day = new DateTime(2019, 9, 7)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 9, Hours = 7, Day = new DateTime(2019, 9, 8)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 9, Hours = 1, Day = new DateTime(2019, 9, 9)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 9, Hours = 12, Day = new DateTime(2019, 9, 10)
                });

                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 8, Day = new DateTime(2019, 9, 1)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 8, Day = new DateTime(2019, 9, 2)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 8, Day = new DateTime(2019, 9, 3)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 8, Day = new DateTime(2019, 9, 4)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 6, Day = new DateTime(2019, 9, 5)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 6, Day = new DateTime(2019, 9, 6)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 6, Day = new DateTime(2019, 9, 7)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 2, Day = new DateTime(2019, 9, 8)
                });
                context.Set <TaskNote>().Add(new TaskNote()
                {
                    TaskId = 10, Hours = 1, Day = new DateTime(2019, 9, 9)
                });

                context.SaveChanges();
            }
            #endregion
        }
Esempio n. 19
0
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName       = Input.Email,
                    Email          = Input.Email,
                    EmailConfirmed = true,
                    FullName       = info.Principal.FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name")?.Value
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        // If they exist, add claims to the user for:
                        // Given(first) name
                        // Locale
                        // Picture
                        if (info.Principal.HasClaim(c => c.Type == "urn:google:picture"))
                        {
                            await _userManager.AddClaimAsync(user,
                                                             info.Principal.FindFirst("urn:google:picture"));
                        }

                        if (info.Principal.HasClaim(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"))
                        {
                            await _userManager.AddClaimAsync(user,
                                                             info.Principal.FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"));
                        }

                        if (info.Principal.HasClaim(c => c.Type == ClaimTypes.NameIdentifier))
                        {
                            await _userManager.AddClaimAsync(user, new Claim("OAuthNameIdentifier",
                                                                             info.Principal.FindFirst(ClaimTypes.NameIdentifier)?.Value));
                        }
                        // Include the access token in the properties
                        var props = new AuthenticationProperties();
                        props.StoreTokens(info.AuthenticationTokens);
                        props.IsPersistent = true;
                        await _signInManager.SignInAsync(user, isPersistent : true);

                        var PhoneNumber = user.PhoneNumber != null;
                        Response.Cookies.Append("_FN", user.FullName?.Split(" ")[0], new CookieOptions()
                        {
                            Path     = "/",
                            HttpOnly = true
                        });
                        Response.Cookies.Append("_PN", PhoneNumber.ToString(), new CookieOptions()
                        {
                            Path     = "/",
                            HttpOnly = true
                        });
                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Esempio n. 20
0
        async public Task <IActionResult> SeedUsers()
        {
            var allUsers = userManager.Users.ToList();

            foreach (var x in allUsers)
            {
                await userManager.DeleteAsync(x);
            }
            ApplicationUser adam = new ApplicationUser {
                UserName = "******", Email = "*****@*****.**"
            };
            ApplicationUser viktor = new ApplicationUser {
                UserName = "******", Email = "*****@*****.**"
            };
            ApplicationUser susan = new ApplicationUser {
                UserName = "******", Email = "*****@*****.**"
            };
            ApplicationUser peter = new ApplicationUser {
                UserName = "******", Email = "*****@*****.**"
            };
            ApplicationUser xerxes = new ApplicationUser {
                UserName = "******", Email = "*****@*****.**"
            };
            await userManager.CreateAsync(adam);

            await userManager.AddClaimAsync(adam, new System.Security.Claims.Claim("role", "administrator"));

            await userManager.CreateAsync(viktor);

            await userManager.AddClaimAsync(viktor, new System.Security.Claims.Claim("role", "subscriber"));

            await userManager.AddClaimAsync(viktor, new System.Security.Claims.Claim("age", "15"));


            await userManager.CreateAsync(susan);

            await userManager.AddClaimAsync(susan, new System.Security.Claims.Claim("role", "subscriber"));

            await userManager.AddClaimAsync(susan, new System.Security.Claims.Claim("age", "48"));

            await userManager.CreateAsync(peter);

            await userManager.AddClaimAsync(peter, new System.Security.Claims.Claim("role", "publisher"));

            await userManager.CreateAsync(xerxes);

            //await userManager.AddClaimAsync(xerxes, new System.Security.Claims.Claim("role", "administrator"));


            //List<ApplicationUser> userList = new List<ApplicationUser>()
            //{
            //  new ApplicationUser {UserName="******", Email="*****@*****.**"},
            //  new ApplicationUser {UserName="******", Email="*****@*****.**"},
            //  new ApplicationUser {UserName="******", Email="*****@*****.**"},
            //  new ApplicationUser {UserName="******", Email="*****@*****.**"},
            //  new ApplicationUser {UserName="******", Email="*****@*****.**"}
            //};
            //foreach (ApplicationUser applicationUser in userList)
            //{
            //    await userManager.CreateAsync(applicationUser);
            //}

            // Skapa användare med userManager...

            return(Ok());

            /*
             * foreach (ApplicationUser applicationUser in databaseContext.Users)
             * {
             *  databaseContext.Remove(applicationUser);
             * }
             *
             * List<ApplicationUser> userList = new List<ApplicationUser>()
             * {
             * new ApplicationUser {UserName="******", Email="*****@*****.**"},
             * new ApplicationUser {UserName="******", Email="*****@*****.**"},
             * new ApplicationUser {UserName="******", Email="*****@*****.**"},
             * new ApplicationUser {UserName="******", Email="*****@*****.**"},
             * new ApplicationUser {UserName="******", Email="*****@*****.**"}
             * };
             * foreach (ApplicationUser applicationUser in userList)
             * {
             *  databaseContext.Add(applicationUser);
             * }
             * databaseContext.SaveChanges();
             * return Ok("hej");
             */
        }
Esempio n. 21
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new IdentityUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    /**************************************************************************************************/
                    /*CUSTOM HOTEL CLAIMS USERS SHOULD BE ASSIGNED UPON RESGISTER - THESE CLAIMS ARE FOR ADMIN TO EDIT*/

                    var serverClaim = new Claim(HotelClaims.Server, HotelClaims.False);
                    await _userManager.AddClaimAsync(user, serverClaim);

                    var cookClaim = new Claim(HotelClaims.Cook, HotelClaims.False);
                    await _userManager.AddClaimAsync(user, cookClaim);

                    var receptionistClaim = new Claim(HotelClaims.Receptionist, HotelClaims.False);
                    await _userManager.AddClaimAsync(user, receptionistClaim);

                    /**************************************************************************************************/
                    /**************************************************************************************************/

                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email }));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
Esempio n. 22
0
        public async Task <IActionResult> CreateAsync([FromBody] UserViewModel userViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var user = new CustomIdentityUser
                    {
                        FirstName = userViewModel.UserDto.FirstName,
                        LastName  = userViewModel.UserDto.LastName,
                        UserName  = userViewModel.UserDto.Email,
                        Email     = userViewModel.UserDto.Email,
                        AccountId = Guid.NewGuid(),
                        IsEnabled = true
                    };
                    var result = await userManager.CreateAsync(user, userViewModel.Password).ConfigureAwait(false);

                    if (result.Succeeded)
                    {
                        var selectedRoles = userViewModel.UserRoles.Where(p => p.Selected).Select(p => p.RoleName).ToList();
                        await userManager.AddToRolesAsync(user, selectedRoles);

                        await userManager.AddClaimAsync(user, new System.Security.Claims.Claim("FullName", string.Format("{0} {1}", userViewModel.UserDto.FirstName, userViewModel.UserDto.LastName)));

                        await userManager.AddClaimAsync(user, new System.Security.Claims.Claim("AccountId", user.AccountId.ToString()));

                        var currentUser = await userManager.GetUserAsync(HttpContext.User);

                        var userDto = new Helpdesk.Service.Dto.ApplicationUserDto()
                        {
                            CreatedUser      = currentUser.FirstName + " " + currentUser.LastName,
                            ModifiedUser     = currentUser.FirstName + " " + currentUser.LastName,
                            CreateDate       = DateTime.Now,
                            ModifyDate       = DateTime.Now,
                            FirstName        = userViewModel.UserDto.FirstName,
                            LastName         = userViewModel.UserDto.LastName,
                            TrIdentityNumber = userViewModel.UserDto.TrIdentityNumber,
                            Title            = userViewModel.UserDto.Title,
                            Email            = userViewModel.UserDto.Email,
                            MobileNumber     = userViewModel.UserDto.MobileNumber,
                            AccountId        = user.AccountId,
                            Address          = new Helpdesk.Model.Entities.Address(),
                            RecordStatus     = Helpdesk.Model.Enums.RecordStatus.A
                        };

                        var userId = applicationUserService.Create(userDto);

                        if (userViewModel.Companies == null)
                        {
                            return(Ok());
                        }
                        if (userViewModel.Companies.Count > 0)
                        {
                            companyAgentMappingService.Create(userViewModel.Companies, userId);
                        }

                        return(Ok());
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }

                    return(BadRequest(ModelState));
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                return(BadRequest());
            }
        }
Esempio n. 23
0
        public async Task <IActionResult> Post(IFormFile file)
        {
            if (file == null)
            {
                return(BadRequest("File is null"));
            }

            if (file.Length == 0)
            {
                return(BadRequest("File is empty"));
            }

            if (file.Length > 10 * 1024 * 1024)
            {
                return(BadRequest("File size cannot exceed 10M"));
            }

            var acceptTypes = new[] { ".jpg", ".jpeg", ".png" };

            if (acceptTypes.All(t => t != Path.GetExtension(file.FileName).ToLower()))
            {
                return(BadRequest("File type not valid, only jpg and png are acceptable."));
            }

            if (string.IsNullOrWhiteSpace(_hostingEnvironment.WebRootPath))
            {
                _hostingEnvironment.WebRootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
            }

            var uploadsFolderPath = Path.Combine(_hostingEnvironment.WebRootPath, "avatars");

            if (!Directory.Exists(uploadsFolderPath))
            {
                Directory.CreateDirectory(uploadsFolderPath);
            }

            var userName = GetClaimValue(JwtClaimTypes.PreferredUserName);
            var fileName = $"{userName}.jpg";
            var filePath = Path.Combine(uploadsFolderPath, fileName);

            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                //await file.CopyToAsync(stream);

                var imageStream = file.OpenReadStream();

                using (var image = Image.Load(imageStream, out _))
                {
                    image.Mutate(c => c.Resize(100, 100));
                    image.SaveAsJpeg(stream);
                }
            }

            var user = await _userManager.FindByNameAsync(userName);

            var pictureClaims = User.Claims.Where(x => x.Type == JwtClaimTypes.Picture).ToList();

            if (pictureClaims.Any())
            {
                await _userManager.RemoveClaimsAsync(user, pictureClaims);
            }

            var result = await _userManager.AddClaimAsync(user, new Claim(JwtClaimTypes.Picture, fileName));

            if (!result.Succeeded)
            {
                throw new Exception(result.Errors.First().Description);
            }

            ViewData["picture"] = fileName;

            return(View("Index"));
        }
Esempio n. 24
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/Identity/Account/Confirm");
            if (ModelState.IsValid)
            {
                var role = new IdentityRole();
                if (!this.context.AppUsers.Any())
                {
                    role.Name = "Admin";
                }
                else
                {
                    role.Name = "User";
                }
                bool x = await _roleManager.RoleExistsAsync(role.Name);

                if (!x)
                {
                    await _roleManager.CreateAsync(role);
                }
                var address = new Address {
                    City = Input.City, Country = Input.Country, PostalCode = Input.Postal, Street = Input.Street
                };
                var user = new ApplicationUser {
                    Email = Input.Email, PhoneNumber = Input.PhoneNumber, UserName = Input.Username, FullName = Input.FullName, Address = address, Gender = Input.Gender, Role = role
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                await _userManager.AddToRoleAsync(user, role.Name);

                await _userManager.AddClaimAsync(user, claim : new Claim(ClaimTypes.Role.ToString(), role.Name));

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");
                    //this.context.UserRoles.Add(new IdentityUserRole<string> { RoleId = role.Id, UserId = user.Id });
                    //this.context.SaveChanges();

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    //await _signInManager.SignInAsync(user, isPersistent: false);
                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
Esempio n. 25
0
        public async Task <IActionResult> Register([FromBody] RegisterViewModel model, int version)
        {
            if (version == 2)
            {
                return(Response(new { Message = "API V2 não disponível" }));
            }

            var userEF = await _userManager.FindByEmailAsync(model.Email);

            if (userEF != null && !string.IsNullOrEmpty(userEF.Email))
            {
                return(Response_BadRequest("Já existe usuário cadastrado com o email informado."));
            }

            if (model.FuncionarioId <= 0 && model.ProfissionalId <= 0)
            {
                return(Response_BadRequest("O ID do funcionário ou o ID do profisssional deve ser informado."));
            }

            if (model.FuncionarioId > 0 && model.ProfissionalId > 0)
            {
                return(Response_BadRequest("O ID do funcionário e o ID do profisssional não podem ser informados ao mesmo tempo."));
            }

            if (!ModelState.IsValid)
            {
                NotifyErrorInvalidModel();
                return(Response());
            }

            userEF = new ApplicationUser {
                UserName = model.Email, Email = model.Email
            };

            var result = await _userManager.CreateAsync(userEF, model.Senha);

            if (result.Succeeded)
            {
                await _userManager.AddClaimAsync(userEF, new Claim("Tipos", "Ler"));

                try
                {
                    var registerCommand = new RegisterAppUserCommand(Guid.Parse(userEF.Id), userEF.Email);
                    await _mediator.SendCommand(registerCommand);

                    if (!InvalidOperation())
                    {
                        await _userManager.DeleteAsync(userEF);

                        return(Response(model));
                    }

                    var usuarioCore_Api = _appUserRepository.GetById(Guid.Parse(userEF.Id));

                    if (usuarioCore_Api == null || usuarioCore_Api.Id != Guid.Parse(userEF.Id))
                    {
                        await _userManager.DeleteAsync(userEF);

                        throw new Exception("Couldn't create the user.");
                    }

                    _logger.LogInformation(1, "Sucess!");
                    var response = new { Message = "Sucess!", NovoUserID = userEF.Id };
                    return(Response(response));
                }
                catch (Exception exc1)
                {
                    _appUserRepository.Remove(Guid.Parse(userEF.Id));
                    await _userManager.DeleteAsync(userEF);

                    var response = new { Message = "Couldn't create the user: " + exc1.Message };
                    //_bugsnag.Notify(new Exception(exc1.Message));
                    return(Response(response));
                }
            }
            AddIdentityErrors(result);
            return(Response(model));
        }
Esempio n. 26
0
        public static async Task Initialize(ApplicationDbContext context, UserManager <ApplicationUser> userManager, RoleManager <IdentityRole> roleManager)
        {
            context.Database.Migrate();

            string AdminUserName = "******";

            var AdminUser = await userManager.FindByNameAsync(AdminUserName);

            if (AdminUser == null)
            {
                var user = new ApplicationUser
                {
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    Name        = "Ilnur",
                    Surname     = "Safin",
                    JobTitle    = "Administrator",
                    Stations    = "GYD",
                    PhoneNumber = "+994502531012"
                };

                var result = await userManager.CreateAsync(user, "gu48u6y");

                if (result.Succeeded)
                {
                    var AdminRole = await roleManager.FindByNameAsync("Admin");

                    if (AdminRole == null)
                    {
                        // first we create Admin rool
                        var role = new IdentityRole
                        {
                            Name = "Admin"
                        };
                        await roleManager.CreateAsync(role);

                        await roleManager.AddClaimAsync(AdminRole, new Claim("Manage Users", "manage.users"));

                        await userManager.AddClaimAsync(user, new Claim("Manage Users", "manage.users"));

                        await userManager.AddToRoleAsync(user, "Admin");
                    }
                    else
                    {
                        await roleManager.AddClaimAsync(AdminRole, new Claim("Manage Users", "manage.users"));

                        await userManager.AddClaimAsync(user, new Claim("Manage Users", "manage.users"));

                        await userManager.AddToRoleAsync(user, "Admin");
                    }
                }
            }
            var OperationsRole = await roleManager.FindByNameAsync("Operations");

            if (OperationsRole == null)
            {
                // first we create Admin rool
                var role = new IdentityRole
                {
                    Name = "Operations"
                };
                await roleManager.CreateAsync(role);
            }
            var StationRole = await roleManager.FindByNameAsync("Station");

            if (StationRole == null)
            {
                // first we create Admin rool
                var role = new IdentityRole
                {
                    Name = "Station"
                };
                await roleManager.CreateAsync(role);
            }
        }
        private async Task ClaimAdd()
        {
            var user = await userManager.FindByNameAsync("a");

            var res = await userManager.AddClaimAsync(user, new Claim("MyClaim", "abc"));
        }
Esempio n. 28
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName       = Input.Email,
                    Email          = Input.Email,
                    FirstName      = Input.FirstName,
                    LastName       = Input.LastName,
                    IsIndependance = Input.IsIndependance,
                    IsGarde        = Input.IsGarde,
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    // Add the right role to that user:
                    //await _userManager.AddToRoleAsync(user, Input.SelectedRole);
                    await _userManager.AddToRoleAsync(user, "Musician");

                    // Creating LibUser when IdentityUser is created
                    var instruments    = Instruments.Where(x => x.IsSelected == true).ToList();
                    var instrumentsIds = instruments.Select(x => x.Id).ToList();
                    var libUser        = new LibUserTO {
                        IdentityUserId = user.Id, InstrumentIds = instrumentsIds
                    };
                    var done = _libraryUnitOfWork.LibUserRepository.Add(libUser);

                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }));
                    }
                    else
                    {
                        await _userManager.AddClaimAsync(user, new Claim("FirstName", user.FirstName));

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

                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
Esempio n. 29
0
        public async Task DupeUserClaimTest()
        {
            var db = UnitTestHelper.CreateDefaultDb();
            var manager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(db));
            var user = new IdentityUser("u1");
            var result = await manager.CreateAsync(user);
            Assert.NotNull(user);
            var claims = new[]
            {
                new Claim("c1", "v1"),
                new Claim("c2", "v2"),
                new Claim("c3", "v3")
            };
            foreach (Claim c in claims)
            {
                // Add dupes
                UnitTestHelper.IsSuccess(await manager.AddClaimAsync(user.Id, c));
                UnitTestHelper.IsSuccess(await manager.AddClaimAsync(user.Id, c));
            }

            var userClaims = new List<Claim>(await manager.GetClaimsAsync(user.Id));
            Assert.Equal(6, userClaims.Count);
            var currentExpected = 6;
            foreach (Claim c in claims)
            {
                Assert.True(userClaims.Exists(u => u.Type == c.Type && u.Value == c.Value));
                UnitTestHelper.IsSuccess(await manager.RemoveClaimAsync(user.Id, c));
                var cs = await manager.GetClaimsAsync(user.Id);
                currentExpected -= 2;
                Assert.Equal(currentExpected, cs.Count());
                Assert.Equal(currentExpected, db.Set<IdentityUserClaim>().Count());
            }
        }
Esempio n. 30
0
        public virtual async Task <IdentityResult> CreateUserClaimsAsync(TUserClaim claims)
        {
            var user = await UserManager.FindByIdAsync(claims.UserId.ToString());

            return(await UserManager.AddClaimAsync(user, new Claim(claims.ClaimType, claims.ClaimValue)));
        }
        public async Task <IHttpActionResult> Register(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // New user account registration, additional tasks
            // Before attempting to add the user, let's validate the claims

            // Reference to the manager
            Manager m = new Manager();

            // Status field to indicate whether the requested claims are allowed
            // The first "not found" or malformed claim will change it to "false"
            bool canRegister = true;

            // Look at the role claims
            foreach (var roleClaimValue in model.Roles)
            {
                if (m.AppClaimGetByMatch("role", roleClaimValue.Trim().ToLower()) == null)
                {
                    canRegister = false;
                }
            }

            // Look at the custom claims, add code here...



            if (canRegister)
            {
                var user = new ApplicationUser()
                {
                    UserName = model.Email, Email = model.Email
                };

                IdentityResult result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // Add the new claims that were submitted by the user/requestor

                    await UserManager.AddClaimAsync(user.Id, new Claim(ClaimTypes.Email, model.Email));

                    await UserManager.AddClaimAsync(user.Id, new Claim(ClaimTypes.Role, "User"));

                    await UserManager.AddClaimAsync(user.Id, new Claim(ClaimTypes.GivenName, model.GivenName));

                    await UserManager.AddClaimAsync(user.Id, new Claim(ClaimTypes.Surname, model.Surname));

                    foreach (var role in model.Roles)
                    {
                        await UserManager.AddClaimAsync(user.Id, new Claim(ClaimTypes.Role, role));
                    }

                    // Add custom claims that were submitted by the user/requestor; add code here...
                }
                else
                {
                    return(GetErrorResult(result));
                }
                return(Ok());
            }
            else
            {
                return(StatusCode(HttpStatusCode.BadRequest));
                // We should give the user more useful info
            }
        }
Esempio n. 32
0
        public async Task <IHttpActionResult> GetRegisterExternal(string provider, string username, string error = null)
        {
            string redirectUri = string.Empty;
            // if redirection is wrong don't even continue
            string redirectUriValidationResult = ValidateClientAndRedirectUri(Request, ref redirectUri);

            if (!string.IsNullOrWhiteSpace(redirectUriValidationResult))
            {
                return(BadRequest(redirectUriValidationResult));
            }

            if (error != null)
            {
                redirectUri = string.Format("{0}?&authenticated={1}&provider={2}&username={3}&token={4}&errorMessage={5}&operation={6}",
                                            redirectUri,
                                            "no",
                                            provider,
                                            username,
                                            "",
                                            Uri.EscapeDataString(error),
                                            "register");

                return(Redirect(redirectUri));
            }

            if (!User.Identity.IsAuthenticated)
            {
                return(new ChallengeResult(provider, this));
            }

            ExternalLoginInfo info = await Authentication.GetExternalLoginInfoAsync();

            if (info == null)
            {
                redirectUri = string.Format("{0}?&authenticated={1}&provider={2}&username={3}&token={4}&errorMessage={5}&operation={6}",
                                            redirectUri,
                                            "no",
                                            provider,
                                            username,
                                            "",
                                            "The provider refused your Login, please check your Social security settings.",
                                            "register");

                return(Redirect(redirectUri));
            }

            // get the claims identity
            ClaimsIdentity claimsIdentity = GetBasicUserIdentity(info);

            // verify if user doesn't have already a login associated
            CustomUser loginUser = await userManager.FindAsync(info.Login);

            if (loginUser != null)
            {
                redirectUri = string.Format("{0}?&authenticated={1}&provider={2}&username={3}&token={4}&errorMessage={5}&operation={6}",
                                            redirectUri,
                                            "no",
                                            provider,
                                            username,
                                            "",
                                            string.Format("The User {0} has already an account {1} associated.", username, provider),
                                            "register");

                return(Redirect(redirectUri));
            }

            // search the User to be registered
            CustomUser user = await userManager.FindByNameAsync(username);

            // register login (from now on he can login with this provider)
            await userManager.AddLoginAsync(user.Id, info.Login);

            // for each claim generated, add the claim
            foreach (var claim in claimsIdentity.Claims)
            {
                await userManager.AddClaimAsync(user.Id, claim);
            }

            redirectUri = string.Format("{0}?&authenticated={1}&provider={2}&username={3}&token={4}&errorMessage={5}&operation={6}",
                                        redirectUri,
                                        "yes",
                                        provider,
                                        username,
                                        "",
                                        "",
                                        "register");

            return(Redirect(redirectUri));
        }
 public async Task AddClaimAsync(string userId, Claim claim)
 {
     await _manager.AddClaimAsync(userId, claim).ConfigureAwait(false);
 }
Esempio n. 34
0
        public async Task <IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (remoteError != null)
            {
                logger.LogError($"Error from external provider: {remoteError}");

                return(RedirectToAction("Login", new { ReturnUrl = returnUrl }));
            }

            var info = await signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                logger.LogError("Error loading external login information.");

                return(RedirectToAction("Login", new { ReturnUrl = returnUrl }));
            }


            ApplicationUser user = null;

            if (info.LoginProvider == "IdStampIT")
            {
                string userId = commonService.Users_GetByLawUnitUIC(info.ProviderKey);
                if (!string.IsNullOrEmpty(userId))
                {
                    user = await userManager.FindByIdAsync(userId);
                }
                if (user == null)
                {
                    SetErrorMessage("Невалиден потребител.");
                    return(RedirectToAction("Login", new { ReturnUrl = returnUrl }));
                }
            }
            if (user == null)
            {
                user = await userManager.FindByLoginAsync(info.LoginProvider, info.ProviderKey);
            }
            if (user != null)
            {
                var claims = await userManager.GetClaimsAsync(user);

                var certNoClaim        = claims.FirstOrDefault(c => c.Type == CustomClaimType.IdStampit.CertificateNumber);
                var currentCertNoClaim = info.Principal.Claims.FirstOrDefault(c => c.Type == CustomClaimType.IdStampit.CertificateNumber);

                if (currentCertNoClaim != null)
                {
                    if (certNoClaim != null)
                    {
                        await userManager.ReplaceClaimAsync(user, certNoClaim, currentCertNoClaim);
                    }
                    else
                    {
                        await userManager.AddClaimAsync(user, currentCertNoClaim);
                    }
                }

                await signInManager.SignInAsync(user, isPersistent : false);

                return(LocalRedirect(returnUrl));
            }


            return(RedirectToAction("AccessDenied"));
        }
Esempio n. 35
0
        public async Task <IActionResult> UpdateStaff(string id, [FromForm] SaveStaffDTO saveStaffDTO)
        {
            var user = await _userManager.FindByIdAsync(id);

            if (user == null)
            {
                return(BadRequest("Invalid User"));
            }
            var userClaims = await _userManager.GetClaimsAsync(user);

            if (!string.IsNullOrEmpty(saveStaffDTO.PhoneNumber))
            {
                user.PhoneNumber = saveStaffDTO.PhoneNumber;
            }
            if (!string.IsNullOrEmpty(saveStaffDTO.Password))
            {
                var changePassword = await _userManager.ChangePasswordAsync(
                    user,
                    saveStaffDTO.CurrentPassword,
                    saveStaffDTO.Password);

                if (!changePassword.Succeeded)
                {
                    return(BadRequest(changePassword.Errors.SingleOrDefault().Description));
                }
            }
            if (!string.IsNullOrEmpty(saveStaffDTO.Name))
            {
                // check for existing claim and remove it
                var claim = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.Name);
                if (claim != null)
                {
                    await _userManager.RemoveClaimAsync(user, claim);
                }
                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Name, saveStaffDTO.Name));
            }
            if (!string.IsNullOrEmpty(saveStaffDTO.Birthday))
            {
                // check for existing claim and remove it
                var claim = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.DateOfBirth);
                if (claim != null)
                {
                    await _userManager.RemoveClaimAsync(user, claim);
                }
                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.DateOfBirth, saveStaffDTO.Birthday));
            }
            if (!string.IsNullOrEmpty(saveStaffDTO.Gender))
            {
                // check for existing claim and remove it
                var claim = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.Gender);
                if (claim != null)
                {
                    await _userManager.RemoveClaimAsync(user, claim);
                }
                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Gender, saveStaffDTO.Gender));
            }
            if (!string.IsNullOrEmpty(saveStaffDTO.Identifier))
            {
                // check for existing claim and remove it
                var claim = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.NameIdentifier);
                if (claim != null)
                {
                    await _userManager.RemoveClaimAsync(user, claim);
                }
                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.NameIdentifier, saveStaffDTO.Identifier));
            }
            if (!string.IsNullOrEmpty(saveStaffDTO.Address))
            {
                // check for existing claim and remove it
                var claim = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.StreetAddress);
                if (claim != null)
                {
                    await _userManager.RemoveClaimAsync(user, claim);
                }
                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.StreetAddress, saveStaffDTO.Address));
            }
            await _userManager.UpdateAsync(user);

            return(Ok());
        }
        public async Task InitializeData()
        {
            _context.Database.EnsureDeleted();
            if (_context.Database.EnsureCreated())
            {
                Onderneming onderneming = new Onderneming()
                {
                    Naam = "Hogeschool Gent"
                };
                _context.Ondernemingen.Add(onderneming);

                //onvoldoende cheques beschikbaar, nog 2 openstaande prestatie waarvoor 7 cheques nodig
                Gebruiker jan = new Gebruiker()
                {
                    Naam     = "Peeters",
                    Voornaam = "Jan",
                    Email    = "*****@*****.**"
                };
                for (int i = 12; i >= 0; i--)
                {
                    Prestatie pres = new Prestatie()
                    {
                        AantalUren     = 4,
                        DatumPrestatie = DateTime.Today.AddMonths(-i),
                        PrestatieType  = PrestatieType.Schoonmaken,
                        Onderneming    = onderneming,
                        Betaald        = true
                    };
                    jan.Prestaties.Add(pres);
                }
                jan.GetPrestatie(11).Betaald = false;
                jan.GetPrestatie(12).Betaald = false;
                int p  = 0;
                int pi = 0;
                for (int i = 3; i > 0; i--)
                {
                    Bestelling b = new Bestelling()
                    {
                        AantalAangekochteCheques = 15,
                        Elektronisch             = true
                    };
                    b.StelDatumsIn(DateTime.Today.AddMonths(-4 * i), DateTime.Today.AddMonths(-4 * i));
                    jan.Bestellingen.Add(b);
                    for (int j = 1; j <= 15; j++)
                    {
                        DienstenCheque d = new DienstenCheque(true, DateTime.Today.AddMonths(-4 * i));
                        if (p < 11)
                        {
                            d.Prestatie     = jan.GetPrestatie(p);
                            d.GebruiksDatum = d.Prestatie.DatumPrestatie;
                        }
                        jan.Portefeuille.Add(d);
                        if (pi < 3)
                        {
                            pi++;
                        }
                        else
                        {
                            pi = 0;
                            p++;
                        }
                    }
                }

                _context.Gebruikers.Add(jan);
                ApplicationUser user1 = new ApplicationUser {
                    UserName = jan.Email, Email = jan.Email
                };
                await _userManager.CreateAsync(user1, "P@ssword1");

                await _userManager.AddClaimAsync(user1, new Claim(ClaimTypes.Role, "customer"));


                //alle cheques zijn toegewezen aan prestaties, geen openstaande prestatie meer
                Gebruiker an = new Gebruiker()
                {
                    Naam = "Pieters", Voornaam = "An", Email = "*****@*****.**"
                };
                Bestelling anBestelling = new Bestelling()
                {
                    AantalAangekochteCheques = 20, Elektronisch = true
                };
                anBestelling.StelDatumsIn(DateTime.Today.AddMonths(-1), DateTime.Today.AddMonths(-1));
                an.Bestellingen.Add(anBestelling);
                for (int i = 4; i > 0; i--)
                {
                    an.Prestaties.Add(new Prestatie()
                    {
                        AantalUren = 5, DatumPrestatie = DateTime.Today.AddMonths(-i), PrestatieType = PrestatieType.Schoonmaken, Onderneming = onderneming, Betaald = true
                    });
                }
                for (int j = 0; j <= 19; j++)
                {
                    DienstenCheque d = new DienstenCheque(true, DateTime.Today.AddMonths(-1));
                    d.Prestatie     = an.GetPrestatie(j / 5);
                    d.GebruiksDatum = d.Prestatie.DatumPrestatie;
                    an.Portefeuille.Add(d);
                }

                _context.Gebruikers.Add(an);
                ApplicationUser user2 = new ApplicationUser {
                    UserName = an.Email, Email = an.Email
                };
                await _userManager.CreateAsync(user2, "P@ssword1");

                await _userManager.AddClaimAsync(user2, new Claim(ClaimTypes.Role, "customer"));


                //nog 2 cheques niet gebruikt, geen openstaande prestaties
                Gebruiker tine = new Gebruiker()
                {
                    Naam = "Pieters", Voornaam = "Tine", Email = "*****@*****.**"
                };
                Bestelling tineBestelling = new Bestelling()
                {
                    AantalAangekochteCheques = 6, Elektronisch = true
                };
                tineBestelling.StelDatumsIn(DateTime.Today.AddMonths(-1), DateTime.Today.AddMonths(-1));
                tine.Bestellingen.Add(tineBestelling);
                tine.Prestaties.Add(new Prestatie()
                {
                    AantalUren = 4, DatumPrestatie = DateTime.Today.AddDays(-10), PrestatieType = PrestatieType.Schoonmaken, Onderneming = onderneming, Betaald = true
                });
                for (int j = 1; j <= 6; j++)
                {
                    DienstenCheque d = new DienstenCheque(true, DateTime.Today.AddMonths(-1));
                    if (j < 5)
                    {
                        d.Prestatie     = tine.GetPrestatie(0);
                        d.GebruiksDatum = d.Prestatie.DatumPrestatie;
                    }
                    tine.Portefeuille.Add(d);
                }
                _context.Gebruikers.Add(tine);
                ApplicationUser user3 = new ApplicationUser {
                    UserName = tine.Email, Email = tine.Email
                };
                await _userManager.CreateAsync(user3, "P@ssword1");

                await _userManager.AddClaimAsync(user3, new Claim(ClaimTypes.Role, "customer"));

                _context.SaveChanges();
            }
        }
Esempio n. 37
0
		public static async void ConfigureUsers(IEnumerable<InMemoryUser> users, EntityFrameworkServiceOptions options, UserManager userManager) {
			using(var db = new Contexto(options.ConnectionString)) {
				
				if(!db.Users.Any()) {
					
					foreach(var u in users) {
						var entity = new Usuario { Email = u.Claims.First(x=>x.Type==Constants.ClaimTypes.Email).Value , UserName = u.Username };
						var response = await userManager.CreateAsync(entity, u.Password);
						
						if(!response.Succeeded) {
							throw new Exception("Não foi possível criar o usuario" + u.Username + response.Errors.ToString());
						}
						else {
							
							var user = await userManager.FindAsync(u.Username,u.Password);
							foreach(var c in u.Claims) {

								await userManager.AddClaimAsync(user.Id,c);
							}
														
							await userManager.UpdateAsync(user);
						}
					}
					db.SaveChanges();
				}
			}
		}