Class: Mumukit::Auth::User

Inherits:
Object
  • Object
show all
Defined in:
lib/mumukit/auth/user.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(social_id, user = nil) ⇒ User

Returns a new instance of User.



7
8
9
10
# File 'lib/mumukit/auth/user.rb', line 7

def initialize(social_id, user=nil)
  @social_id = social_id
  @user = user || client.user(@social_id)
end

Instance Attribute Details

#social_idObject

Returns the value of attribute social_id.



5
6
7
# File 'lib/mumukit/auth/user.rb', line 5

def social_id
  @social_id
end

#userObject

Returns the value of attribute user.



5
6
7
# File 'lib/mumukit/auth/user.rb', line 5

def user
  @user
end

Class Method Details

.clientObject



64
65
66
67
68
69
70
# File 'lib/mumukit/auth/user.rb', line 64

def self.client
  Auth0Client.new(
      :client_id => ENV['MUMUKI_AUTH0_CLIENT_ID'],
      :client_secret => ENV['MUMUKI_AUTH0_CLIENT_SECRET'],
      :domain => "mumuki.auth0.com"
  )
end

.from_email(email) ⇒ Object



58
59
60
61
62
# File 'lib/mumukit/auth/user.rb', line 58

def self.from_email(email)
  user = client.users("email:#{email}").first
  raise Mumukit::Auth::EmailNotRegistered.new('There is no user registered with that email.') unless user.present?
  new(user['user_id'])
end

Instance Method Details

#add_permission!(key, permission) ⇒ Object



12
13
14
15
# File 'lib/mumukit/auth/user.rb', line 12

def add_permission!(key, permission)
  .add_permission!(key, permission)
  update_user_metadata!
end

#admin?(slug) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/mumukit/auth/user.rb', line 46

def admin?(slug)
  .admin? slug
end

#appsObject



34
35
36
# File 'lib/mumukit/auth/user.rb', line 34

def apps
  ['bibliotheca', 'classroom', 'admin', 'atheneum']
end

#clientObject



38
39
40
# File 'lib/mumukit/auth/user.rb', line 38

def client
  self.class.client
end

#librarian?(slug) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/mumukit/auth/user.rb', line 42

def librarian?(slug)
  .librarian? slug
end

#metadataObject



26
27
28
# File 'lib/mumukit/auth/user.rb', line 26

def 
  @metadata ||= Mumukit::Auth::Metadata.load(permissions_string)
end

#permissions_for(app) ⇒ Object



30
31
32
# File 'lib/mumukit/auth/user.rb', line 30

def permissions_for(app)
  [app]['permissions']
end

#permissions_stringObject



22
23
24
# File 'lib/mumukit/auth/user.rb', line 22

def permissions_string
  apps.select { |app| @user[app].present? }.map { |app| {app.to_s => @user[app]} }.reduce({}, :merge).to_json
end

#remove_permission!(key, permission) ⇒ Object



17
18
19
20
# File 'lib/mumukit/auth/user.rb', line 17

def remove_permission!(key, permission)
  .remove_permission!(key, permission)
  update_user_metadata!
end

#student?(slug) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/mumukit/auth/user.rb', line 54

def student?(slug)
  .student? slug
end

#teacher?(slug) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/mumukit/auth/user.rb', line 50

def teacher?(slug)
  .teacher? slug
end