more groundwork related to updates in SetMembership
This commit is contained in:
+1
-1
@@ -41,7 +41,7 @@ const (
|
|||||||
AuditSetUserContactInfo = 106
|
AuditSetUserContactInfo = 106
|
||||||
AuditResendEmailConfirm = 107
|
AuditResendEmailConfirm = 107
|
||||||
AuditChangePassword = 108
|
AuditChangePassword = 108
|
||||||
AuditAdminSetUserContectInfo = 109
|
AuditAdminSetUserContactInfo = 109
|
||||||
AuditAdminChangeUserPassword = 110
|
AuditAdminChangeUserPassword = 110
|
||||||
AuditAdminChangeUserAccount = 111
|
AuditAdminChangeUserAccount = 111
|
||||||
AuditAdminSetAccountSecurity = 112
|
AuditAdminSetAccountSecurity = 112
|
||||||
|
|||||||
+14
-3
@@ -236,20 +236,25 @@ func (c *Community) MemberCount(hidden bool) (int, error) {
|
|||||||
* u - The user to change the membership status of.
|
* u - The user to change the membership status of.
|
||||||
* level - Their membership level. If this is 0, they are removed from membership.
|
* level - Their membership level. If this is 0, they are removed from membership.
|
||||||
* locked - Whether they can unjoin the community themselves. Ignored if removing them.
|
* locked - Whether they can unjoin the community themselves. Ignored if removing them.
|
||||||
|
* personUID - The UID of the person taking this action.
|
||||||
|
* ipaddr - The source IP address, for audit records.
|
||||||
* Returns:
|
* Returns:
|
||||||
* Standard Go error status.
|
* Standard Go error status.
|
||||||
*/
|
*/
|
||||||
func (c *Community) SetMembership(u *User, level uint16, locked bool) error {
|
func (c *Community) SetMembership(u *User, level uint16, locked bool, personUID int32, ipaddr string) error {
|
||||||
if level == 0 {
|
if level == 0 {
|
||||||
_, err := amdb.Exec("DELETE FROM commmember WHERE commid = ? AND uid = ?", c.Id, u.Uid)
|
res, err := amdb.Exec("DELETE FROM commmember WHERE commid = ? AND uid = ?", c.Id, u.Uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
stuffMembership(c.Id, u.Uid, false, false, 0)
|
stuffMembership(c.Id, u.Uid, false, false, 0)
|
||||||
|
ra, err := res.RowsAffected()
|
||||||
|
if err == nil && ra > 0 {
|
||||||
err = AmOnUserLeaveCommunityServices(c, u)
|
err = AmOnUserLeaveCommunityServices(c, u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
rs, err := amdb.Query("SELECT granted_lvl, locked FROM commmember WHERE commid = ? AND uid = ?", c.Id, u.Uid)
|
rs, err := amdb.Query("SELECT granted_lvl, locked FROM commmember WHERE commid = ? AND uid = ?", c.Id, u.Uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -276,10 +281,16 @@ func (c *Community) SetMembership(u *User, level uint16, locked bool) error {
|
|||||||
stuffMembership(c.Id, u.Uid, true, locked, level)
|
stuffMembership(c.Id, u.Uid, true, locked, level)
|
||||||
err = AmOnUserJoinCommunityServices(c, u)
|
err = AmOnUserJoinCommunityServices(c, u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
err := c.TouchUpdate()
|
||||||
|
if err == nil {
|
||||||
|
ar := AmNewAudit(AuditCommunitySetMembership, personUID, ipaddr, fmt.Sprintf("cid=%d", c.Id),
|
||||||
|
fmt.Sprintf("uid=%d", u.Uid), fmt.Sprintf("level=%d", level))
|
||||||
|
AmStoreAudit(ar)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user