external_user.rb
1.02 KB
module ExternalUser
included do
attr_accessor :external_person_id
end
def self.webfinger_lookup(login, domain, environment)
if login && domain && environment.has_federated_network?(domain)
# Ask if network at <domain> has user with login <login>
# FIXME: Make an actual request to the federated network, which should return nil if not found
{
login: login
}
end
nil
end
def self.external_login
# Call Noosfero /api/login
end
# Authenticates a user from an external social network
def self.external_authenticate(username, password, environment)
login, domain = username.split('@')
webfinger = User.webfinger_lookup(login, domain, environment)
if webfinger
user = User.external_login(login, password, domain)
if user
u = User.new
# Set other fields on "u" based on information in "user" returned by API
u.external_person_id = ExternalPerson.get_or_create(login, domain).id
return u
end
end
nil
end
end