sto cercando di risolvere il mio problema su Google da alcune settimane e sono molto vicino a rinunciare.
Il contesto:
Sto sviluppando e mantenendo un pannello di amministrazione multi-tenant per club sportivi.
Il mio forum Discourse self-hosted è attualmente accessibile solo ai membri di quei club. Vorrei renderlo pubblico. La mia integrazione SSO personalizzata assegna automaticamente il nome completo degli utenti dal mio database all’utente di Discourse dopo il login.
Il problema:
Attualmente non posso rendere pubblico il mio forum perché il nome completo di un utente dovrebbe essere visibile solo agli utenti dello stesso club.
La mia esperienza come sviluppatore Ruby è pari a zero (sono uno sviluppatore JS), ma finora sono riuscito a capire questa parte di codice:
# plugin.rb
after_initialize {
require_dependency 'basic_user_serializer'
require_dependency 'current_user'
class ::BasicUserSerializer
attributes :name
def name
# insieme fisso di nomi di gruppi che indicano l'appartenenza a un club
clubGroups = Array['foo', 'bar', 'baz']
# PARTE CHE NON RIESCO A RISOLVERE:
# Mostra il nome dell'utente SOLO se condivide uno dei `clubGroups` dell'utente attualmente loggato,
# ad esempio, sono loggato come un utente che appartiene al gruppo 'bar', il che significa che appartengo al club Bar. Dovrei essere in grado di vedere i nomi solo degli utenti che appartengono anch'essi al gruppo 'bar'
???
end
end
}
Non riesco a capire le seguenti cose:
come recuperare i gruppi dell’utente corrente
come recuperare i gruppi dell’utente in evidenza
Una volta ottenuti questi dati, potrei confrontare i due array con clubGroups e decidere se mostrare o meno il nome dell’utente.
Un’altra sfida per me sarà disabilitare la possibilità di modificare il proprio nome, ma questa è un’altra storia.
Quando provo a recuperare l’ID dell’utente corrente da passare alla query, non sono sicuro di come fare.
Quando navigo nel modello CurrentUser nel codice, l’unico metodo che sembra rilevante per le mie esigenze è current_user, ma quando provo a fare questo:
pp CurrentUser.current_user
ricevo l’errore:
undefined method `current_user' for CurrentUser:Module
Penso che mi stia sicuramente sfuggendo qualche conoscenza di base su Ruby, ma forse puoi risolverlo facilmente per me?
Potresti dare un’occhiata al codice di questo plugin. Aggiunge un flair per gli avatar degli utenti appartenenti agli stessi gruppi, in modo che possano riconoscersi come membri del gruppo. È una cosa diversa, ma contiene il codice che verifica se l’utente che visualizza fa parte dello stesso gruppo dell’utente che ha pubblicato.