Другой альтернативой было бы объявление интерфейса.
type SecureModel interface {
SecureMe()
}
Убедитесь, что ваша модель реализует его:
type User struct {
Id bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`
Username string `json:"username" bson:"username"`
Secret string `json:"secret,omitempty" bson:"secret"`
}
func (u *User) SecureMe() {
u.Secret = ""
}
И вызывается только в зависимости от того, какой маршрут вызывается.
// I am being sent to a non-admin, secure me.
if _, ok := user.(SecureModel); ok {
user.(SecureModel).SecureMe()
}
// Marshall to JSON, etc.
...
Изменить: причина использования интерфейса здесь - это случаи, когда вы можете отправлять произвольные модели по проводу с использованием общего метода.
Похоже, вы пытаетесь использовать U-2 для получения согласия администратора, который не является администратором в T-1.
U-2 пытается предоставить согласие администратора для приложения в T-1
blockquote>Только администраторы в T-1 могут предоставить согласие администратора в T-1. В вашем случае это будет U-1, я верю.