func (r Role) merge(lg *zap.Logger, n Role) (Role, error) {
	var out Role
	var err error
	if r.Role != n.Role {
		return out, authErr(http.StatusConflict, "Merging role with conflicting names: %s %s", r.Role, n.Role)
	}
	out.Role = r.Role
	out.Permissions, err = r.Permissions.Grant(n.Grant)
	if err != nil {
		return out, err
	}
	out.Permissions, err = out.Permissions.Revoke(lg, n.Revoke)
	return out, err
}
func (r Role) merge(lg *zap.Logger, n Role) (Role, error) {
	var out Role
	var err error
	if r.Role != n.Role {
		return out, authErr(http.StatusConflict, "Merging role with conflicting names: %s %s", r.Role, n.Role)
	}
	out.Role = r.Role
	out.Permissions, err = r.Permissions.Grant(n.Grant)
	if err != nil {
		return out, err
	}
	out.Permissions, err = out.Permissions.Revoke(lg, n.Revoke)
	return out, err
}
func ( r Role ) merge ( lg * zap . Logger , n Role ) ( Role , error ) { var out Role var err error if r . Role != n . Role { return out , authErr ( http . StatusConflict , " " , r . Role , n . Role ) } out . Role = r . Role out . Permissions , err = r . Permissions . Grant ( n . Grant ) if err != nil { return out , err } out . Permissions , err = out . Permissions . Revoke ( lg , n . Revoke ) return out , err }
// merge for a role works the same as User above -- atomic Role application to
// each of the substructures.
merge for a role works the same as User above -- atomic Role application to each of the substructures .