1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/lib/fog/aws/models/iam/user.rb
Josh Lane 0cc4279333 model managed policies
* list attached group/user policies
* fix policy paging
* default managed policy listing
2015-05-29 13:01:25 -07:00

98 lines
2.3 KiB
Ruby

module Fog
module AWS
class IAM
class User < Fog::Model
identity :id, :aliases => 'UserName'
attribute :path, :aliases => 'Path'
attribute :arn, :aliases => 'Arn'
attribute :user_id, :aliases => 'UserId'
attribute :created_at, :aliases => 'CreateDate', :type => :time
def access_keys
requires :id
service.access_keys(:username => id)
end
def attach(policy_or_arn)
requires :identity
arn = if policy_or_arn.respond_to?(:arn)
policy_or_arn.arn
else
policy_or_arn
end
service.attach_user_policy(self.identity, arn)
end
def detach(policy_or_arn)
requires :identity
arn = if policy_or_arn.respond_to?(:arn)
policy_or_arn.arn
else
policy_or_arn
end
service.detach_user_policy(self.identity, arn)
end
def attached_policies
requires :identity
service.managed_policies(:username => self.identity)
end
def destroy
requires :id
service.delete_user(id)
true
end
def groups
requires :identity
service.groups(:username => self.identity)
end
def policies
requires :identity
service.policies(:username => self.identity)
end
def password=(password)
requires :identity
has_password = !!self.password_created_at
if has_password && password.nil?
service.delete_login_profile(self.identity)
elsif has_password
service.update_login_profile(self.identity, password)
elsif !password.nil?
service.create_login_profile(self.identity, password)
end
end
def password_created_at
requires :identity
service.get_login_profile(self.identity).body["LoginProfile"]["CreateDate"]
rescue Fog::AWS::IAM::NotFound
nil
end
def save
requires :id
data = service.create_user(id, path || '/').body['User']
merge_attributes(data)
true
end
end
end
end
end