Hi Jive,
we have an internal incident where a group member (BAD) edited a blogposts by another member (GOOD).
GOOD created a blogposts.
BAD edited the post to something not nice
The blogost does not show that it was edit by BAD. It still shows GOOD as the creator.
This feels like a bug or two or ...
Firstly, the last editor should show somewhere.
Secondly, the blogpost should not be editable by other members. They can comment.
Thirdly, I did not find any documentation about how permissions in a social group are handled. Who can do what?
best regards,
Nils
Hello Nils,
Social group permissions are much "looser" than space permissions -- that is, you're either a member of the group or you're not. If you're a member, you should be able to create any type of content. A member can edit any other member's content as well -- even a group administrator's content.
Regarding your bug suggestions:
Hope that helps some!
Thanks,
Brad
1. There should be a "Last modified:" field at the top of the content after publishing. The content should still be owned by the original publisher but that by-line should be appended with a "last modified."
There is no sign of an other author! Have you reproduced this?
2. The blog post is actually editable by all members by design. The justification here is if you shouldn't be able to create content in the group then you shouldn't be a member.
3. There isn't really any documentation because I think they figured it was straight forward -- if you're a member you can do anything except add other members.
Creating is not the point, it is modifying.
In a SocialGroup, only Blogposts behave like this.
Documents, have versions, show last modified, and modification can be set for each document.
Discussions, can not be modified by other members.
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Network Services GmbH, Norderstedt, Registereintragung / Registration: Amtsgericht Kiel HRB 9608 KI
Geschaeftsfuehrung / Management Board: Dr. Hannes Pfister, Dr. Roland Schuetz
-- Nils
Hey Nils,
So I was finally able to reproduce this. It looks like Private and Secret groups are effected by this but Open and Members Only groups are not effected for whatever reason. I'm not sure if this is by design or is a bug, but it looks like everyone around here is actually aware of this one way or the other. I didn't see an issue ticket logged so I'm going to go ahead and log this as a bug and we'll see what QA does with it!
Thanks,
Brad
Great!
but it looks like everyone around here is actually aware of this one way or the other
Please do not forget the documentation.
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Network Services GmbH, Norderstedt, Registereintragung / Registration: Amtsgericht Kiel HRB 9608 KI
Geschaeftsfuehrung / Management Board: Dr. Hannes Pfister, Dr. Roland Schuetz
I will forward this to the docs guys. Your issue ID on this is CS-16142.
This issue is logged as an improvement? Must be a mistake.
Hey Nils,
I've logged it as an improvement as it's currently working as designed as far as I can tell.
- Brad
Please have this confirmed by product management.
Since blogs in public and member groups do not behave like this, as you have tested, this does not look like "works as designed". You have also commented that at least the last modifier should the listed.
This issue is top priority for our users.
best regards,
Nils
Nils,
This is as designed because it's assumed that in these private groups there is no hierarchy as it's invite only and people can't just walk up and join them.
- Brad
Sorry again Brad,
We need some official statement from product management here. I will write them a mail.
Firstly, I do not want to believe that it is the intentional behavior that blogposts in private and secret groups can be edited any member of that group with displaying the wrong modifier.
Secondly, I have to repeat myself, this needs to be documented explicitly.
-- Nils
Hello Nils,
I understand, I saw the mail come through. We will likely be reviewing internally and get back to you. When/if the statement comes back as expected there are some improvements that should likely be filed here, like as you mentioned the fact that blog posts aren't somehow marked as "modified" in the view.
Cheers,
Brad
Hello Nils we are working on a fix today (hopefully) and will probably want a conference call tomorrow (Freitag) to have a discussion with yourself (and Detlev) with Engineering on the fix.
Such a call would be late afternoon Frankfurt and early morning Portland, will you and or Detlev be available?
Hi Nils,
Apologies for the earlier confusion. We do see this as an issue and, as Paul said, we will be working with you on how to address it.
Regards,
Olivia
Hi Olivia, hi Paul,
thanks for the updates. I will email with you to set up a phone call.
regards,
Nils
Hi
Detlev/Nils,
Regarding issue #4 from Erik's email concerning social group blog permissions, we do have a few questions.
The current expected behaviour with regard to which users can edit posts in a blog in a social group is as follows:
1) An owner of a social group, or user with the "administer" role, has permission to edit any posts made in the blog of that social group - including posts made by other members of the social group.
2) Regular members of a social group may edit any posts they create in the social group blog but a regular member cannot edit posts created by other users in the social group blog.
In local testing, the application is adhering to the above expected behaviours in normal use cases.
I have created a new private group to check this behavior.
- userA created a new private group and a blogpost
- userB became member and can NOT edit that blogpost
- userB became admin and could change blogpost
- userB became member again and could NOT change the blogpost
This result confirms the point 1 & 2.
However, in the case that was opened by Lufthansa (http://www.jivesoftware.com/jivespace/thread/57132), the stated seen behaviour was that a member was able to edit the blog post made by another member in a social group.
The first question we'd like to confirm is, when the term "members" was used in the support case, can you confirm that it was used in reference to users that are not owners or administrators of the social group in question? I assume the answer is yes, but we just need to be certain in investigating the cause of the undesired behaviour.
Yes, member is member, administrator is administrator.
Creator/Owner have not been in the focus.
Next, in local testing, we have only been able to replicate the undesired behaviour when one of the following scenarios has first taken place. Can you confirm whether either of these scenarios took place prior to seeing the issue the support case was opened for?
1) In the admin console under Blogs -> System Blogs, a system admin can actually navigate to a social group blog if the admin knows the blogID value for the blog from the database and they enter that blogID value in the text box at the top right of the list of system blogs and hit enter. If the admin then chooses to add a user as an author to that blog via this screen, upon clicking the "Update Blog" button, all users that are able to write posts in the social group blog at that time will be granted administrative permissions for the social group blog which would then allow them to edit posts of other users in the social group blog.
I could not add the userB. The "Blog Address" was not filled and Clearspace complaint about that.
After adding the groups name as the address, the userB (member only user) could edit the blog.
After removing userB from the System-Blogs configuration editing was NOT possible anymore.
2) If userA creates a new social group and then chooses to grant the "administrator" role to another member of the group, userB, then userB will then have the ability to change userA's role to just "member." However, if this is done, userA, who at one time was an "administrator" for the social group, still retains their administrative permissions for the social group's blog and thus is still able to edit posts made by other users.
I did this test, too (userA and userB are just oposite)
- userB created a new secret group
- userA got member and could NOT edit that blogpost
- userA got admin and could edit that blogpost
- userB got member and could STILL edit that blogpost
I can confirm point 2.
It is important to note that both of these scenarios describe product bugs that we will be fixing in the next patch release of the software, but in both scenarios, intervention is required by a system admin or an administrator of the social group before the undesirable situation where a user who is simply a member of a social group is able to edit posts made by another user when they shouldn't be able to.
Any information you can provide concerning these scenarios and Lufthansa's use cases would be very helpul.
With this new background information I will try to get some more info about the behavior we have with the test group of the reported issue.
- Nils
Hi,
I have checked the group which I did not tests with.
In "System Blogs" all 4 groups members are listed. (me the owner and admin, plus three members).
Since I do not think that I added these members to manually or someone else did, I did some random checks for the
other groups that have blogs. All groups that I have checked via "System Blogs" seem to have all members listed.
There is no indication if someone has ever pressed "Update Blog", is there? How can we verify who can write a new
blogpost and who can edit others blogposts?
Since the behavoir has been reported by users to us, maybe there is was an update/upgrade issue which trigger this
"Update Blog" event?
-- Nils
Hello Nils,
Regarding indication about who might have added users to the blog, I haven't seen any logging statements in the code, including messages to jiveAuditLog, around this. The verification piece is a bit harder to figure out, it would seem -- I'll let engineering figure that out as it seems like that's actually the issue we're having right now, who can edit blog posts and when.
I think it is unlikely that an upgrade added additional users and I haven't seen any issues logged around this; however, it's not impossible -- again, I'll let engineering comment on that as their knowledge is more intimate than mine at this point.
Cheers,
Brad
Unfortunately, the only way to truly tell what users will have full admin priviledges for a blog is go to the database.
The permissions for blogs are held in the jiveEntitlement table. So, for the group where you had the incident reported, you'll want to take the blogID for the blog for that group and run the following query:
SELECT * FROM jiveEntitlement WHERE objectType = 37 AND objectID = <blogID>;
This will show all the entitlements associated with that blog. Entitlements provide the information on what user(s) can do what things with the blog.
For a social group, all the members of the group should have records in the jiveEntitlement table for the group blog that have a value of 3 for the "entitlementMask" column. This indicates the user has the permission to create a new blog post.
If the blog was ever updated via the "System Blogs" page in the admin console, I would expect that you would see the members having an "entitlementMask" column value of 11.
Can you provide the output of the above query for the blog in question?
Since the behavoir has been reported by users to us, maybe there is was an update/upgrade issue which trigger this
"Update Blog" event?
I'm not aware of any upgrade/update tasks that would be responsible for this behavior in the 2.5 series and locally I have not been able to reproduce the behavior with doing upgrades.
I've also tested with creating a system blog and then moving that blog into a social group to see if that could result in the behavior that was reported but I was not able to replicate the problem in that scenario either.
At this point, the only way that we have been able to replicate the issue was if the one of the two aforementioned scenarios had first taken place.
mysql> SELECT * FROM jiveEntitlement WHERE objectType = 37 AND objectID = '2526';+---------------+------------+----------+--------+---------+-------------+-----------------+---------------+------------------+
| entitlementID | objectType | objectID | userID | groupID | contentType | entitlementMask | creationDate | modificationDate |
+---------------+------------+----------+--------+---------+-------------+-----------------+---------------+------------------+
| 344601 | 37 | 2526 | 2695 | -1 | -1 | 11 | 1255091479361 | 1255091479361 |
| 344602 | 37 | 2526 | 2005 | -1 | -1 | 11 | 1255091479361 | 1255091479361 |
| 344603 | 37 | 2526 | 2045 | -1 | -1 | 11 | 1255091479361 | 1255091479361 |
| 344604 | 37 | 2526 | 5792 | -1 | -1 | 11 | 1255091479361 | 1255091479361 |
+---------------+------------+----------+--------+---------+-------------+-----------------+---------------+------------------+
4 rows in set (0.00 sec)
mysql> SELECT entitlementID,objectType,objectID,userID,groupID,contentType,entitlementMask,from_unixtime(creationDate/1000),from_unixtime(modificationDate/1000) FROM jiveEntitlement WHERE objectType = 37 AND objectID = '2526';
+---------------+------------+----------+--------+---------+-------------+-----------------+----------------------------------+--------------------------------------+
| entitlementID | objectType | objectID | userID | groupID | contentType | entitlementMask | from_unixtime(creationDate/1000) | from_unixtime(modificationDate/1000) |
+---------------+------------+----------+--------+---------+-------------+-----------------+----------------------------------+--------------------------------------+
| 344601 | 37 | 2526 | 2695 | -1 | -1 | 11 | 2009-10-09 14:31:19 | 2009-10-09 14:31:19 |
| 344602 | 37 | 2526 | 2005 | -1 | -1 | 11 | 2009-10-09 14:31:19 | 2009-10-09 14:31:19 |
| 344603 | 37 | 2526 | 2045 | -1 | -1 | 11 | 2009-10-09 14:31:19 | 2009-10-09 14:31:19 |
| 344604 | 37 | 2526 | 5792 | -1 | -1 | 11 | 2009-10-09 14:31:19 | 2009-10-09 14:31:19 |
+---------------+------------+----------+--------+---------+-------------+-----------------+----------------------------------+--------------------------------------+
these are the results for that group I have been testing with in the cause of troubleshooting this issue.
To check how big our problem is, it would be great to get another query that gives us all the members of a group with their role (creator, member, admin).
Putting both results side by side would show if a group's blog might have 'wrong' permissions.
-- Nils
Here's a query I put together that should be able to provide what you suggested, information on members of a social group returned next to their entitlement for the group's blog:
select g.groupID, g.groupType, g.name, gm.userID, gm.memberType, e.entitlementID, e.entitlementMask
from jivesgroup g
join jivesgroupmember gm
on gm.groupID = g.groupID
join jiveBlog b
on b.containerType = 700
and b.containerID = g.groupID
join jiveEntitlement e
on e.objectType = 37
and e.objectID = b.blogID
and e.userID = gm.userID
where g.displayName = '<groupDisplayName>';
To run the query for a particular social group, replace the <groupDisplayName> part with the display name string for the group which, when viewing the social group, is the part of the URL after the "/groups/" section of the URL.
The memberType column will tell what the role is of the user in social group. Here are the possible values and their translations:
0 = OWNER
1 = MEMBER
2 = PENDING_APPROVAL
3 = BANNED
4 = INVITED
Hi,
I wrote a script to compare the blog and the group permissions for every group.
The result says that we only have 15 groups where the permissions of both match.
And 138 groups where there is a mismatch.
Many mismatches might be false positive, since I compared entitlementMask = 11 to memberType = 0.
If I change the comparisson to entitlementMask in (11,15) to memberType = 0. The result looks better.
Groups that look good: 102
Groups that look bad : 51
For further analysis it would be great to get access to the documentation of the database schema, where we can lookup what entitlementMask = 15 is.
best regards,
Nils
PS: the result are from our test system which has all produtive data from around June in it. I do not do a produtive search, yet.
Each effective entitlement is given a value in the Entitlement enum. Here is definition of the values for the enum taken from the code:
NONE(0x0),
READ(0x1),
WRITE(0x2),
MODERATE(0x4),
ADMINISTER(0x8);
The entitlementMask is the bit-wise "or" of the entitlement bits that are granted. So, a value of 15 for the entitlement mask means that the user has been granted all of the entitlements above. A value of 11 would mean the user has READ, WRITE, and ADMINISTER entitlements.
The expected value for an owner of a social group in the entitlementMask column for the social group's blog is 15.
Thanks for the info.
I attached the results maybe you interpret them differently.
There are a lot of groups that show in the list that just have a different number of "admin" users.
Other show up in there because they have a little number of group owners, but a large number user with blog-overwrite permissions.
That overwrite permissions (entitlementMask = 11,15) can only be set via saving a group in System-Blog (admin console)
Detlev and me and the other admin can not remember to have saved all these blog individually.
Or by the group admin, but taking a look at the list, it is very unlikely that, that many group admins made all their members admins and back again.
Can you really exclude the possibility that something else upgrade, bugs might have set these permissions?
To get back to a normal state, I am thinking of taking the groups results and update the blog-permissions so that group members get create permissions and only the owners get overwrite rights.
best regards,
Nils
Can you send along the queries as you are running them that are producing the results under the "Blog Permissions" and "Groups Permissions" sections in the output you gave? I just want to be sure I am reading the columns correctly.
Can you really exclude the possibility that something else upgrade, bugs might have set these permissions?
There is a possibility, yes, and I apologize if I gave the impression that we are completely excluding this possibility. However, in local testing, we have not been able to reproduce the data as you are seeing it with any upgrades that have been tried.
To get back to a normal state, I am thinking of taking the groups results and update the blog-permissions so that group members get create permissions and only the owners get overwrite rights.
The normal state for entitlements for a social group blog would be:
scott.hirdes wrote:
Can you send along the queries as you are running them that are producing the results under the "Blog Permissions" and "Groups Permissions" sections in the output you gave? I just want to be sure I am reading the columns correctly.
The queries are the ones you have posted here. The script including the queries is attached.
The normal state for entitlements for a social group blog would be:
- all the owners/admins of the group have a jiveEntitlement record for the social group blog with an entitlementMask value of 15
- all regular members of the group have a jiveEntitlement record for the social group blog with an entitlementMask value of 3
So updating to these settings would bring us back to normal. Great.
The bugfixes that are planned for 2.5.18, do they also correct permissions that are not consistent or do they 'just' prevent new errors? I ask this because, if they heal our problems we wouldn't have to update the permissions.
best regards,
Nils
In the script you are using, the queries that are used to count the number of admins and members of a blog are doing an EXISTS check from jiveEntitlement to jiveBlog on just the social group id. I would recommend that you also include a "containerType = 700" in the inner query against jiveBlog there since the social group id could potentially overlap with other container ids for other container types. Not necessarily all that likely, but possible.
So, for example, I would recommend changing the query getting the value for "numberOfAdminsInBlog" to this:
SELECT count(*) FROM jiveEntitlement WHERE objectType = 37 AND objectID in (select blogID from jiveBlog where containerType = 700 and containerID = '$i') AND entitlementMask in (11,15);
The bugfixes that are planned for 2.5.18, do they also correct permissions that are not consistent or do they 'just' prevent new errors? I ask this because, if they heal our problems we wouldn't have to update the permissions.
The fixes mentioned in this case are going to be in 2.5.19, the 2.5.18 release was already closed to development by the time these issues were discovered.
As for an upgrade task, at this time we are not planning on implementing an upgrade task to update entitlements for social group blogs. Changing the values in the database as you have suggested would be the supported way of correcting the data.
I would recommend that you also include a "containerType = 700" in the inner query against jiveBlog there since the social group id could potentially overlap with other container ids for other container types. Not necessarily all that likely, but possible.
Thanks for the feedback. I changed the SQL in the script. We still get the same number of groups with problems.
As for an upgrade task, at this time we are not planning on implementing an upgrade task to update entitlements for social group blogs. Changing the values in the database as you have suggested would be the supported way of correcting the data.
Will you/Jive provide the queries for the correction task?
best regards,
Nils
This query can be run to set the entitlement value for social group blogs for all social group members correctly. The update will grant those users READ and CREATE permission:
-- Entitlements for group members
UPDATE jiveEntitlement
SET entitlementMask = 3
WHERE entitlementID in (SELECT je.entitlementID
FROM jiveEntitlement je
JOIN jiveBlog jb
ON jb.blogID = je.objectID
AND jb.containerType = 700
JOIN jiveSGroupMember gm
ON gm.groupID = jb.containerID
AND gm.memberType = 1
AND gm.userID = je.userID
WHERE je.objectType = 37);
This query can be used to set the entitlement value for social group blogs for all social group owners correctly. The update will grant those users ADMIN, MODERATE, EDIT, CREATE, and READ permissions:
-- Entitlements for group owners/administrators
UPDATE jiveEntitlement
SET entitlementMask = 15
WHERE entitlementID in (SELECT je.entitlementID
FROM jiveEntitlement je
JOIN jiveBlog jb
ON jb.blogID = je.objectID
AND jb.containerType = 700
JOIN jiveSGroupMember gm
ON gm.groupID = jb.containerID
AND gm.memberType = 0
AND gm.userID = je.userID
WHERE je.objectType = 37);
I'm sure it goes without saying, but you'll want to backup the jiveEntitlement table (at least) before running these updates. Also, the updates need to be run while the application is not running.
Hi Jive,
can you please update the "Case Product Issue" widget.
scott.hirdes wrote:
The fixes mentioned in this case are going to be in 2.5.19, the 2.5.18 release was already closed to development by the time these issues were discovered.
best regards,
Nils
Hey Nils,
I've updated the issue ticket. This should be reflected here shortly.
- Brad
> I've updated the issue ticket. This should be reflected here shortly.
Nothing got updated. Please update the status of this.
Regards
Detlev
Hi Detlev,
Just to be sure: what is the extent of the updating that you'd like to see? It looks like you want the version updated to include 2.5.18, yes? Is that all?
Thanks,
Kevin
Hi Kevin,
To summarize this thread: We have a situation with blog permissions on our systems where it is unclear how this came. JiveSW has analyzed two bugs (see page 2: Nils on Oct 9, 2009 3:21 PM, quoted points 1 & 2); both are very probable NOT the cause of our problem. Anyhow, JiveSW has not analyzed any other cause. It might be that by some upgrade procedure something went wrong.
The resolution was planned as follows: We update the permissions "manually", and JiveSW fixes the two bugs. Alltogether hoping that there won't be the same effect in the future.
Now check out the JIRA widget:
Thanks in advance
Detlev
Hi Detlev,
The current bug attached to this case is closed as "Could not Reproduce," so it won't be changed. I'm currently following up on this to find out exactly what the bug(s) involved are (and find more information about them), and I'll get back to you with more information when I have it. I apologize for the inconvenience and confusion.
Thanks,
Kevin
Hi Detlev,
I've caught up on exactly what the problems are that you're seeing, and I've done some checking into this. I've found the bug report for the bug that involves setting a social group blog's author in the admin console and added it to this case. The bug ID is CS-16589. I was unsuccessful in finding the second bug so far, but I am following up with some of our engineers, and either they will post or I will when I have more information about this. Let me know if you have any questions about this.
Thanks,
Kevin
Hi Detlev,
My apologies on the long wait. We couldn't reproduce what you found in your instance with any of our test instances, so it was found that you had values corrupted either before or during the upgrade process. Also, we haven't seen this issue come up with other customers, although permissions have been the most difficult part of upgrading to 4.x due to their completely new system. This is why the report is set to not able to reproduce. Let me know if you have any questions or comments about this.
Thanks,
Kevin
Hi Kevin,
This is a long thread with some confusion, but I think I did my best (and I think it was not that bad) to overcome the confusion. As I already had written, it have been Jive engineers who came up with two bugs, not us. So "not able to reproduce" is more than strange... or less.. or whatever.
To get concrete again:
The quoted bugs in Nils reply on page two are:
1.) "In the admin console under Blogs -> System Blogs, a system admin can actually navigate to a social group blog if the admin knows the blogID..." --> This corresponds to the case added by yours some weeks ago. Perfect.
2.) "If userA creates a new social group and then chooses to grant the "administrator" role to another member of the group, userB, then userB will then have the ability to change userA's role to just "member." However, if this is done, userA, who at one time was an "administrator" for the social group, still retains their administrative permissions for the social group's blog and thus is still able to edit posts made by other users."
This second point was brought up by your colleagues. And Nils could reproduce it. So, sorry, I don't have any understanding why this was not clear.And: It is reproducable.
And: The whole thread has nothing to do with 4.0 / upgrade from 2.5 to 4.0. As far as updates have been affected, it was from 2.5.x to 2.5.y
Regards
Detlev
Hi Detlev,
My apologies on the 4.x mentions, that was a bad assumption I made.
Can you reproduce this on your system after you've made the queries that Brad gave you to fix the problem? The engineer checked a vanilla instance, and couldn't reproduce what was going on there, that's why he filed it as could not reproduce. In what environment are you able to reproduce this still?
Thanks,
Kevin
Hi Kevin,
Let me get some things straight:
- Not Brad gave us some queries, but Scott ;-)
- The queries have been given to get rid of the inconsistencies in our DB; originally, we wanted to know how this inconsistency came into the DB; this could not get cleared.
- Looking for situations how such an inconsistency might come up, your colleagues found two bugs (probably not related to our issue, but "additional" situations how such an inconsistency might appear).
- So: The queries have nothing to do with the aforementioned bugs!
Anyhow, we just checked the situation, and in fact, this second bug seems to be resolved, too. Great! (Even if this never has been tracked with a JIRA case, so we could not expect this to be resolved.)
So, I'm closing this ticket. Anyhow, I will open a new one, as the resolution of bug #1 (accessing group blogs via admin console as "system" or "personal" blogs) is not satisfactory (no result is given, not even a "nothing found" or similar).
Regards
Detlev
Jive combines the most powerful features of collaboration software, community software,
social networking software & social media monitoring into the leading SBS solution.
© Copyright 2000–2010 Jive Software. All rights reserved.
915 SW Stark St., Suite 400, Portland, OR 97205
Sales: 877-495-3700 | General: 503-295-3700
Privacy Policy | Sitemap | Jobs | Contact Us