Class: Origen::Users::User

Inherits:
Object show all
Defined in:
lib/origen/users/user.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ User

Returns a new instance of User.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/origen/users/user.rb', line 18

def initialize(*args)
  if args.last.is_a?(Symbol)
    @role = args.pop
  else
    @role = :user
  end
  if args.size == 2
    @name = args.first
  end
  id = args.pop
  if id.to_s =~ /(.*)@/
    @email = id
    @id = Regexp.last_match(1)
  else
    @id = id
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object

Provides methods to access attributes available from LDAP



120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/origen/users/user.rb', line 120

def method_missing(method, *args, &block)
  l = Origen.ldap.lookup(self)
  if l
    if l.attribute_names.include?(method)
      l[method]
    else
      super
    end
  else
    super
  end
end

Instance Attribute Details

#emailObject



72
73
74
75
76
77
# File 'lib/origen/users/user.rb', line 72

def email
  return @email if @email
  if Origen.site_config.email_domain
    "#{id}@#{Origen.site_config.email_domain}"
  end
end

#nameObject



68
69
70
# File 'lib/origen/users/user.rb', line 68

def name
  @name || @id
end

#roleObject (readonly)

Returns the value of attribute role.



7
8
9
# File 'lib/origen/users/user.rb', line 7

def role
  @role
end

Class Method Details

.currentObject



14
15
16
# File 'lib/origen/users/user.rb', line 14

def self.current
  Origen.current_user
end

.current_user_idObject



10
11
12
# File 'lib/origen/users/user.rb', line 10

def self.current_user_id
  `whoami`.strip
end

Instance Method Details

#==(user) ⇒ Object



109
110
111
112
113
114
115
116
117
# File 'lib/origen/users/user.rb', line 109

def ==(user)
  if user.is_a?(Origen::Users::User)
    user.id == id
  elsif user.is_a?(String)
    user.downcase == id
  else
    super
  end
end

#admin?Boolean

Returns true if the user is an admin for the current application

Returns:

  • (Boolean)


53
54
55
# File 'lib/origen/users/user.rb', line 53

def admin?
  role == :admin
end

#current?Boolean

Returns true if the user is the current user

Returns:

  • (Boolean)


58
59
60
# File 'lib/origen/users/user.rb', line 58

def current?
  id.to_s.downcase == self.class.current_user_id
end

#idObject Also known as: core_id



47
48
49
# File 'lib/origen/users/user.rb', line 47

def id
  @id.to_s.downcase
end

#initialsObject

Returns the user’s initials in lower case



63
64
65
66
# File 'lib/origen/users/user.rb', line 63

def initials
  initials = name.split(/\s+/).map { |n| n[0].chr }.join('')
  initials.downcase
end

#lookup(default = 'Unknown') ⇒ Object

Fetch user data from the FSL application directory

Examples:


User.new("r49409").lookup.motunixdomain   # => ["cde-tx32.sps.mot.com"]


84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/origen/users/user.rb', line 84

def lookup(default = 'Unknown')
  data = Origen.ldap.lookup(self)
  if block_given?
    if data
      yield data
    else
      default
    end
  else
    data
  end
end

#name_and_emailObject

Returns a string like “Stephen McGinty <[email protected]>”



144
145
146
# File 'lib/origen/users/user.rb', line 144

def name_and_email
  "#{name} <#{email}>"
end

#rawObject Also known as: display

Prints all raw data available on the given user from the FSL application directory.

Most of the useful data is already exposed through the available user methods, but if you want to get any of these parameters they can be fetched via the lookup method.



103
104
105
106
# File 'lib/origen/users/user.rb', line 103

def raw
  Origen.ldap.display(self)
  nil
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


133
134
135
136
137
138
139
140
141
# File 'lib/origen/users/user.rb', line 133

def respond_to?(method)
  super || begin
    if Origen.ldap.available?
      Origen.ldap.lookup(self) && Origen.ldap.lookup(self).attribute_names.include?(method.to_sym)
    else
      false
    end
  end
end

#send(options) ⇒ Object

Send the user an email

Examples:

User.current.send subject: "Complete", message: "Your job is done!"
User.new("r49409").send subject: "Complete", message: "Your job is done!"


41
42
43
44
45
# File 'lib/origen/users/user.rb', line 41

def send(options)
  options[:body] ||= options[:message]
  options[:to] = self
  Origen.mailer.send_email(options)
end