public void UpdateUser(UserWithPermissionsContract contract) { ParamIs.NotNull(() => contract); UpdateEntity <User>(contract.Id, (session, user) => { if (!EntryPermissionManager.CanEditUser(PermissionContext, user.GroupId)) { var loggedUser = GetLoggedUser(session); var msg = string.Format("{0} (level {1}) not allowed to edit {2}", loggedUser, loggedUser.GroupId, user); log.Error(msg); throw new NotAllowedException(msg); } if (EntryPermissionManager.CanEditGroupTo(PermissionContext, contract.GroupId)) { user.GroupId = contract.GroupId; } if (EntryPermissionManager.CanEditAdditionalPermissions(PermissionContext)) { user.AdditionalPermissions = new PermissionCollection(contract.AdditionalPermissions.Select(p => PermissionToken.GetById(p.Id))); } var diff = OwnedArtistForUser.Sync(user.AllOwnedArtists, contract.OwnedArtistEntries, a => user.AddOwnedArtist(session.Load <Artist>(a.Artist.Id))); SessionHelper.Sync(session, diff); user.Active = contract.Active; AuditLog(string.Format("updated {0}", EntryLinkFactory.CreateEntryLink(user)), session); }, PermissionToken.ManageUserPermissions, skipLog: true); }
public UserWithPermissionsContract GetUserByName(string name, bool skipMessages) { return(HandleQuery(session => { var user = session.Query <User>().FirstOrDefault(u => u.Name.Equals(name)); if (user == null) { return null; } var contract = new UserWithPermissionsContract(user, LanguagePreference); if (!skipMessages) { contract.UnreadMessagesCount = session.Query <UserMessage>() .Where(m => m.User.Id == user.Id) .WhereIsUnread(true) .WhereInboxIs(UserInboxType.Nothing, true) .Count(); } return contract; })); }
public static void SetLoggedUser(UserWithPermissionsContract user) { ParamIs.NotNull(() => user); if (!HttpContext.Current.User.Identity.IsAuthenticated) { throw new InvalidOperationException("Must be authenticated"); } HttpContext.Current.User = new VocaDbPrincipal(HttpContext.Current.User.Identity, user); }
public void UpdateUser_Name_InvalidCharacters() { LoggedUser.GroupId = UserGroupId.Admin; permissionContext.RefreshLoggedUser(repository); var contract = new UserWithPermissionsContract(userWithoutEmail, ContentLanguagePreference.Default); contract.Name = "Miku!"; data.UpdateUser(contract); }
public UserEdit(UserWithPermissionsContract contract) : this() { Active = contract.Active; GroupId = contract.GroupId; Id = contract.Id; Name = contract.Name; OwnedArtists = contract.OwnedArtistEntries; Permissions = PermissionToken.All .Select(p => new PermissionFlagEntry(p, contract.AdditionalPermissions.Contains(p), contract.EffectivePermissions.Contains(p))).ToArray(); }
public void UpdateUser_Name_AlreadyInUse() { LoggedUser.GroupId = UserGroupId.Admin; permissionContext.RefreshLoggedUser(repository); var contract = new UserWithPermissionsContract(userWithoutEmail, ContentLanguagePreference.Default); contract.Name = userWithEmail.Name; data.UpdateUser(contract); }
public void UpdateUser_SetPermissions() { LoggedUser.GroupId = UserGroupId.Admin; permissionContext.RefreshLoggedUser(repository); var contract = new UserWithPermissionsContract(userWithoutEmail, ContentLanguagePreference.Default); contract.AdditionalPermissions = new HashSet <PermissionToken>(new[] { PermissionToken.DesignatedStaff }); data.UpdateUser(contract); var user = repository.Load(contract.Id); Assert.IsTrue(user.AdditionalPermissions.Has(PermissionToken.DesignatedStaff), "User has the given permission"); }
public UserWithPermissionsContract GetUserByName(string name, bool skipMessages) { return(HandleQuery(session => { var user = session.Query <User>().FirstOrDefault(u => u.Name.Equals(name)); if (user == null) { return null; } var contract = new UserWithPermissionsContract(user, LanguagePreference); if (!skipMessages) { contract.UnreadMessagesCount = session.Query <UserMessage>().Count(m => !m.Read && m.Receiver.Id == user.Id); } return contract; })); }
public void UpdateUser_Name() { LoggedUser.GroupId = UserGroupId.Admin; permissionContext.RefreshLoggedUser(repository); var oldName = userWithoutEmail.Name; var contract = new UserWithPermissionsContract(userWithoutEmail, ContentLanguagePreference.Default); contract.Name = "HatsuneMiku"; data.UpdateUser(contract); var user = repository.Load(contract.Id); Assert.AreEqual("HatsuneMiku", user.Name, "Name was updated"); Assert.AreEqual("hatsunemiku", user.NameLC, "Name was updated"); var oldNameEntry = repository.List <OldUsername>().FirstOrDefault(u => u.User.Id == userWithoutEmail.Id); Assert.IsNotNull(oldNameEntry, "Old name entry was created"); Assert.AreEqual(oldName, oldNameEntry.OldName, "Old name as expected"); }
public void SetLoggedUser(User user) { LoggedUser = new UserWithPermissionsContract(user, ContentLanguagePreference.Default); }
public FakePermissionContext(UserWithPermissionsContract loggedUser) { LoggedUser = loggedUser; }
protected override string GetPersistedValue(UserWithPermissionsContract permissionContext) => permissionContext.Language;
protected override bool GetPersistedValue(UserWithPermissionsContract user) { return(user.ShowChatbox); }
protected override void SetPersistedValue(UserWithPermissionsContract user, bool val) { user.ShowChatbox = val; }
protected override void SetPersistedValue(UserWithPermissionsContract user, ContentLanguagePreference val) { user.DefaultLanguageSelection = val; }
protected override ContentLanguagePreference GetPersistedValue(UserWithPermissionsContract user) { return(user.DefaultLanguageSelection); }
protected abstract void SetPersistedValue(UserWithPermissionsContract user, T val);
protected abstract T GetPersistedValue(UserWithPermissionsContract permissionContext);
public void UpdateUser_NotAllowed() { var contract = new UserWithPermissionsContract(userWithoutEmail, ContentLanguagePreference.Default); data.UpdateUser(contract); }
public VocaDbPrincipal(IIdentity identity, UserWithPermissionsContract user) : base(identity, new string[] {}) { this.user = user; }
protected override void SetPersistedValue(UserWithPermissionsContract user, string val) { user.Language = val; }