public async void RemoveSelectedRole()
        {
            await _userEndPoint.RemoveUserFromRole(SelectedUser.Id, SelectedUserRole);

            AvailableRoles.Remove(SelectedUserRole);
            UserRoles.Add(SelectedUserRole);
        }
Exemple #2
0
        public async Task AddToRoleAsync(AppUser user, string normalizedRoleName, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();

            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            if (string.IsNullOrWhiteSpace(normalizedRoleName))
            {
                throw new ArgumentException("ValueCannotBeNullOrEmpty", nameof(normalizedRoleName));
            }
            var roleEntity = await Roles.SingleOrDefaultAsync(r => r.NormalizedName == normalizedRoleName, cancellationToken);

            if (roleEntity == null)
            {
                throw new InvalidOperationException("Role doesn't exists: " + normalizedRoleName);
            }

            var userRole = new IdentityUserRole <int>
            {
                UserId = user.Id,
                RoleId = roleEntity.Id
            };

            UserRoles.Add(userRole);
        }
        public void CreateDefaultAccount(IPasswordService passwordService)
        {
            if (Users.Any(u => u.Login == "administrator"))
            {
                return;
            }
            // create admin role
            var adminRole = new Role()
            {
                Name = "admin"
            };

            Roles.Add(adminRole);

            // create admin user
            var salt      = string.Empty;
            var hash      = passwordService.HashPassword("password", out salt);
            var adminUser = new User()
            {
                Login        = "******",
                PasswordHash = hash,
                HashSalt     = salt
            };

            // link user and role
            UserRoles.Add(new UserRole
            {
                Role = adminRole,
                User = adminUser
            });

            SaveChanges();
        }
        /// <inheritdoc />
        public override async Task AddToRoleAsync(TUser user, string normalizedRoleName,
                                                  CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            user.ThrowIfNull(nameof(user));
            if (string.IsNullOrEmpty(normalizedRoleName))
            {
                throw new ArgumentException($"Parameter {nameof(normalizedRoleName)} cannot be null or empty.");
            }
            var roleEntity = await FindRoleAsync(normalizedRoleName, cancellationToken);

            if (roleEntity == null)
            {
                throw new InvalidOperationException($"Role '{normalizedRoleName}' was not found.");
            }
            var userRoles = (await UserRolesRecord.GetRolesAsync(user.Id))?.Select(x => new TUserRole
            {
                UserId = user.Id,
                RoleId = x.Id
            }).ToList();

            UserRoles = userRoles;
            UserRoles.Add(CreateUserRole(user, roleEntity));
        }
Exemple #5
0
        public void SetRoles(CMSDataContext Db, string[] value)
        {
            if (value == null)
            {
                Db.UserRoles.DeleteAllOnSubmit(UserRoles);
                return;
            }
            var qdelete = from r in UserRoles
                          where !value.Contains(r.Role.RoleName)
                          select r;

            Db.UserRoles.DeleteAllOnSubmit(qdelete);

            var q = from s in value
                    join r in UserRoles on s equals r.Role.RoleName into g
                    from t in g.DefaultIfEmpty()
                    where t == null
                    select s;

            foreach (var s in q)
            {
                var role = Db.Roles.Single(r => r.RoleName == s);
                UserRoles.Add(new UserRole {
                    Role = role
                });
            }
        }
Exemple #6
0
        public async void CreateDefaultAccount()
        {
            if (!Users.Any(u => u.Login == "administrator"))
            {
                // create admin role
                var adminRole = new Role()
                {
                    Name = "admin"
                };
                Roles.Add(adminRole);

                // create admin user
                var salt      = string.Empty;
                var hash      = AuthHelper.HashPassword("password", out salt);
                var adminUser = new User()
                {
                    Login        = "******",
                    PasswordHash = hash,
                    HashSalt     = salt
                };

                // link user and role
                UserRoles.Add(new UserRole {
                    Role = adminRole,
                    User = adminUser
                });

                await SaveChangesAsync();
            }
        }
        public async void AddSelectedRole()
        {
            await _userEndpoint.AddUserToRole(SelectedUser.Id, SelectedAvailableRole);

            UserRoles.Add(SelectedAvailableRole);
            AvailableRoles.Remove(SelectedAvailableRole);
        }
Exemple #8
0
        public void SetRoles(CMSDataContext db, string[] value)
        {
            if (value == null)
            {
                db.UserRoles.DeleteAllOnSubmit(UserRoles);
                db.SubmitChanges();
                return;
            }
            var qdelete = from r in UserRoles
                          where !value.Contains(r.Role.RoleName)
                          select r;

            db.UserRoles.DeleteAllOnSubmit(qdelete);

            var q = from s in value
                    join r in UserRoles on s equals r.Role.RoleName into g
                    from t in g.DefaultIfEmpty()
                    where t == null
                    select s;

            foreach (var s in q)
            {
                var role   = db.Roles.SingleOrDefault(r => r.RoleName == s);
                var roleid = role?.RoleId;
                if (role == null)
                {
                    roleid = CreateRole(db, s);
                }
                UserRoles.Add(new UserRole {
                    RoleId = roleid.Value, UserId = UserId
                });
            }
            db.SubmitChanges();
        }
Exemple #9
0
        /// <summary>
        /// Adds a user to this role instance.
        /// </summary>
        /// <param name="user">The user to add.</param>
        public void AddUser(User user)
        {
            var userRole = new UserRole()
            {
                User = user,
                Role = this
            };

            UserRoles.Add(userRole);
        }
Exemple #10
0
        public async void AddSelectedRole()
        {
            if (!string.IsNullOrEmpty(SelectedAvailableRole))
            {
                await _userEndpoint.AddUserToRole(SelectedUser.Id, SelectedAvailableRole);

                UserRoles.Add(SelectedAvailableRole);
                AvailableRoles.Remove(SelectedAvailableRole);
            }
        }
Exemple #11
0
        public UserRole AddUser(User u)
        {
            var ur = new UserRole {
                Id = Utils.GenerateID()
            };

            u.UserRoles.Add(ur);
            UserRoles.Add(ur);
            return(ur);
        }
Exemple #12
0
 public void SetRoles(IList <Guid> roleIds)
 {
     if (roleIds != null)
     {
         foreach (var roleId in roleIds)
         {
             UserRoles.Add(new UserRole(roleId, Id));
         }
     }
 }
Exemple #13
0
        public void AddRole(Role role)
        {
            UserRole userRole = new UserRole(this, role);

            if (UserRoles == null)
            {
                UserRoles = new List <UserRole>();
            }

            UserRoles.Add(userRole);
        }
Exemple #14
0
        public void AddUserToRoles(string userId, IList <string> roles)
        {
            foreach (var role in roles)
            {
                UserRoles.Add(new IdentityUserRole <string> {
                    UserId = userId, RoleId = role
                });
            }

            SaveChanges();
        }
Exemple #15
0
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            if (!DesignerProperties.GetIsInDesignMode(this))
            {
                foreach (var userRole in UserRoleData.ReadUserRoles())
                {
                    UserRoles.Add(userRole);
                }
            }
        }
        private void SeedDefaultUser()
        {
            var id       = "E428D8D6-4C5E-4D33-9437-569195B3B80A".ToLower();
            var email    = "*****@*****.**";
            var username = "******";
            var password = "******";

            var user = Users.FirstOrDefault(a => a.Id == id);

            if (user == null)
            {
                user = new User()
                {
                    Id                 = "E428D8D6-4C5E-4D33-9437-569195B3B80A".ToLower(),
                    UserName           = username,
                    Email              = email,
                    NormalizedEmail    = email.ToUpper(),
                    NormalizedUserName = username.ToUpper(),
                    SecurityStamp      = Guid.NewGuid().ToString("D"),
                    LockoutEnabled     = true,
                };

                var hashedPassword = new PasswordHasher <User>().HashPassword(user, password);
                user.PasswordHash = hashedPassword;
                Users.Add(user);
            }
            else
            {
                var hashedPassword = new PasswordHasher <User>().HashPassword(user, password);

                user.UserName           = username;
                user.Email              = email;
                user.NormalizedEmail    = email.ToUpper();
                user.NormalizedUserName = username.ToUpper();
                user.PasswordHash       = hashedPassword;
                user.LockoutEnabled     = true;
            }

            SaveChanges();

            var foundRole = UserRoles.FirstOrDefault(a => a.UserId == user.Id && a.RoleId == AppRoles.ADMIN_ROLE);

            if (foundRole == null)
            {
                var role = new IdentityUserRole <string>();
                role.UserId = user.Id;
                role.RoleId = AppRoles.ADMIN_ROLE;
                UserRoles.Add(role);
            }

            SaveChanges();
        }
        public void ProcessMessageSubModuleAccessDoesNotAllowParentAccess()
        {
            var module = CommandModuleMock.Object;
            var role   = UserRoles.First();

            role.CommandList = "CommandMock.SubMock.*";
            UserRoles.Add(new UserRole("OtherRole", null, new List <string>(new string[] { "CommandMock.*" })));
            var result = CommandManager.ProcessMessage("Foo", "Auth");

            Assert.IsTrue(result.Processed);
            Assert.IsTrue(result.Errors.Any());
            ExecutorMocks["Foo"].Verify(x => x(It.IsAny <string>(), It.IsAny <string>()), Times.Never);
        }
        public void ProcessMessageAllowsAuthorizedUserWhenWildcardIsRestricted()
        {
            var module = CommandModuleMock.Object;
            var role   = UserRoles.First();

            role.CommandList = "CommandMock.SubMock.*";
            UserRoles.Add(new UserRole("OtherRole", null, new List <string>(new string[] { "CommandMock.*" })));
            var result = CommandManager.ProcessMessage("Foobar", "Auth");

            Assert.IsTrue(result.Processed);
            Assert.IsNull(result.Errors);
            ExecutorMocks["Foobar"].Verify(x => x(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }
Exemple #19
0
        public void SetRoles(CMSDataContext db, string[] value, bool log = true)
        {
            if (value == null)
            {
                db.UserRoles.DeleteAllOnSubmit(UserRoles);
                db.SubmitChanges();
                return;
            }
            var deletes = (from r in db.UserRoles
                           where r.UserId == UserId
                           where !value.Contains(r.Role.RoleName)
                           select new { r, r.Role.RoleName }).ToList();

            db.UserRoles.DeleteAllOnSubmit(deletes.Select(rr => rr.r));

            var addlist = (from s in value
                           join r in UserRoles on s equals r.Role.RoleName into g
                           from t in g.DefaultIfEmpty()
                           where t == null
                           select s).ToList();

            foreach (var s in addlist)
            {
                var role   = db.Roles.SingleOrDefault(r => r.RoleName == s);
                var roleid = role?.RoleId;
                if (role == null)
                {
                    roleid = CreateRole(db, s);
                }

                UserRoles.Add(new UserRole {
                    RoleId = roleid.Value, UserId = UserId
                });
            }
            db.SubmitChanges();
            if (!log)
            {
                return;
            }

            if (deletes.Count > 0)
            {
                db.LogActivity($"Remove Roles {string.Join(",", deletes.Select(rr => rr.RoleName))} from user {Username}", pid: PeopleId, uid: Util.UserPeopleId);
            }

            if (addlist.Count > 0)
            {
                db.LogActivity($"Add Roles {string.Join(",", addlist)} to user {Username}", pid: PeopleId, uid: Util.UserPeopleId);
            }
        }
Exemple #20
0
        /// <summary>
        /// Fill the in memory database with our mock data.
        /// </summary>
        private void PopulateDatabaseWithMockData()
        {
            Roles.Add(MockRoles.Admin);
            Roles.Add(MockRoles.User);
            var allUsers = MockApplicationUsers.GetAll().ToArray();

            Users.AddRange(allUsers);
            SaveChanges();
            foreach (var user in allUsers)
            {
                UserRoles.Add(MockUserRoles.GetUserRoleForUser(user.Id));
            }
            Todo.AddRange(MockTodos.GetAll());
            SaveChanges();
        }
Exemple #21
0
        public void AddRoles(CMSDataContext Db, string[] value)
        {
            var q = from s in value
                    join r in UserRoles on s equals r.Role.RoleName into g
                    from t in g.DefaultIfEmpty()
                    where t == null
                    select s;

            foreach (var s in q)
            {
                var role = Db.Roles.Single(r => r.RoleName == s);
                UserRoles.Add(new UserRole {
                    Role = role
                });
            }
        }
        public async void AddSelectedRole()
        {
            if (UserRoles.IndexOf(SelectedAvailableRole) < 0)
            {
                await _userEndPoint.AddUserToRole(SelectedUser.Id, SelectedAvailableRole);

                UserRoles.Add(SelectedAvailableRole);
                await LoadUsers();

                NotifyOfPropertyChange(() => Users);
                NotifyOfPropertyChange(() => UserRoles);
            }
            else
            {
                MessageBox.Show("Already There!");
            }
        }
Exemple #23
0
        public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection)
        {
            SettingsPropertyValueCollection ret = new SettingsPropertyValueCollection();

            SqlConnection sqlCon = new SqlConnection(ConnectionString);
            SqlCommand    sqlCmd = new SqlCommand(GetProcedure, sqlCon);

            sqlCmd.CommandType = CommandType.StoredProcedure;

            sqlCmd.Parameters.AddWithValue("@UserID", (string)context["UserName"]);

            try
            {
                sqlCon.Open();
                SqlDataReader reader = sqlCmd.ExecuteReader();

                UserRoles        roles = new UserRoles();
                SettingsProperty sp    = new SettingsProperty("Roles");
                sp.PropertyType = typeof(UserRoles);

                SettingsPropertyValue spValue = new SettingsPropertyValue(sp);
                spValue.PropertyValue = roles;

                while (reader.Read())
                {
                    UserRole role = new UserRole
                    {
                        UserID        = (string)reader["UserID"],
                        EntityContext = (int)reader["EntityContext"],
                        EntityID      = (string)reader["EntityID"],
                        Role          = (int)reader["Role"]
                    };
                    roles.Add(role);
                }

                ret.Add(spValue);
            }
            finally
            {
                sqlCon.Close();
                sqlCmd.Dispose();
            }

            return(ret);
        }
 public UserDbContext(DbContextOptions options)
     : base(options)
 {
     Database.EnsureCreated();
     if (Users.Find("User1") != null)
     {
         return;
     }
     Users.Add(new User("User1", "123"));
     Users.Add(new User("User2", "123"));
     Roles.Add(new Role("Admin"));
     UserRoles.Add(new UserRole
     {
         NormalizedUserName = "******",
         NormalizedRoleName = "ADMIN"
     });
     SaveChanges();
 }
Exemple #25
0
        public User AddUser(string role, RegisterDto dto)
        {
            var user = dto.ToEntity();

            user.Password = _passwordHasher.HashPassword(user, dto.Password);

            Add(user);

            var userRole = new UserRole
            {
                RoleId = Roles.SingleOrDefault(x => x.Name.Equals(role)).Id,
                UserId = user.Id
            };

            UserRoles.Add(userRole);

            return(user);
        }
Exemple #26
0
        /// <summary>
        /// Assign / Remove roles
        /// </summary>
        /// <param name="roles">Roles id</param>
        /// <param name="roleEntities">Role entities</param>
        /// <exception cref="ForbiddenOperationDomainException"></exception>
        public void EditRoles(IEnumerable <int> roles, List <Role.Role> roleEntities)
        {
            if (Root)
            {
                throw new ForbiddenOperationDomainException("Root user");
            }

            var roleIds = roles as int[] ?? roles.ToArray();

            // Add new roles
            foreach (var roleId in roleIds)
            {
                var role = roleEntities.SingleOrDefault(r => r.Id == roleId);

                // Skip if the role to add no exists in the context
                if (role == null)
                {
                    continue;
                }

                // Skip if the role is just assigned
                if (UserRoles.Any(i => i.RoleId == roleId))
                {
                    continue;
                }

                UserRoles.Add(
                    new UserRole
                {
                    RoleId = role.Id,
                    UserId = Id
                });
            }

            // Remove deleted roles
            foreach (var userRole in UserRoles.ToArray())
            {
                if (!roleIds.Contains(userRole.RoleId))
                {
                    UserRoles.Remove(userRole);
                }
            }
        }
Exemple #27
0
        /// <summary>
        /// Adds the given <paramref name="normalizedRoleName"/> to the specified <paramref name="user"/>.
        /// </summary>
        /// <param name="user">The user to add the role to.</param>
        /// <param name="normalizedRoleName">The role to add.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
        /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
        public async override Task AddToRoleAsync(User user, string normalizedRoleName, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            if (string.IsNullOrWhiteSpace(normalizedRoleName))
            {
                throw new ArgumentException(Resources.ValueCannotBeNullOrEmpty, nameof(normalizedRoleName));
            }
            var roleEntity = await FindRoleAsync(normalizedRoleName, cancellationToken);

            if (roleEntity == null)
            {
                throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Resources.RoleNotFound, normalizedRoleName));
            }
            UserRoles.Add(CreateUserRole(user, roleEntity));
        }
Exemple #28
0
        public void AddRoles(CMSDataContext db, params string[] value)
        {
            var q = from s in value
                    join r in UserRoles on s equals r.Role.RoleName into g
                    from t in g.DefaultIfEmpty()
                    where t == null
                    select s;

            foreach (var s in q)
            {
                var role = db.Roles.SingleOrDefault(r => r.RoleName == s);
                if (role == null)
                {
                    throw new Exception($"Role {s} does not exist");
                }
                UserRoles.Add(new UserRole {
                    Role = role
                });
            }
        }
Exemple #29
0
        public User AddChild(ChildInfoDto dto)
        {
            var user = dto.ToEntity();

            user.Status = UserStatus.Activate;

            user.Password = _passwordHasher.HashPassword(user, DefaultPassword);

            Add(user);

            var userRole = new UserRole
            {
                RoleId = Roles.SingleOrDefault(x => x.Name.Equals(Settings.UserRoles.Child)).Id,
                UserId = user.Id
            };

            UserRoles.Add(userRole);

            return(user);
        }
        /// <summary>
        /// Adds the given <paramref name="normalizedRoleName"/> to the specified <paramref name="user"/>.
        /// </summary>
        /// <param name="user">The user to add the role to.</param>
        /// <param name="normalizedRoleName">The role to add.</param>
        /// <param name="companyId">The id of the company to which this role to be added.</param>
        /// <param name="tenantId">The id of the tenant to which this role to be added.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
        /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
        public async override Task AddToRoleAsync(User user, string normalizedRoleName, Guid?companyId, Guid?tenantId, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            if (string.IsNullOrWhiteSpace(normalizedRoleName))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(normalizedRoleName));
            }
            var roleEntity = await FindRoleAsync(normalizedRoleName, companyId, tenantId, cancellationToken);

            if (roleEntity == null)
            {
                throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, $"Role {normalizedRoleName} does not exist.", normalizedRoleName));
            }
            UserRoles.Add(CreateUserRole(user, roleEntity));
        }