Guest User

Untitled

a guest
Mar 16th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. def self.find_or_create_user(username, project_member = false)
  2. return User.anonymous if username.blank?
  3.  
  4. u = User.find_by_login(username)
  5. if !u
  6. # Create a new user if not found
  7. #temail = TracAttribute.find_by_sql("SELECT value FROM #{TracAttribute.table_name} WHERE sid='#{username}' AND name='email'")
  8. temail = TracAttribute.find(:first, :limit => 1, :conditions => "sid = '#{username}' AND name='email'")
  9. email = encode(temail)
  10. tname = TracAttribute.find_by_sql("SELECT value FROM #{TracAttribute.table_name} WHERE sid='#{username}' AND name='name'")
  11. fn = $1 if tname =~ (/(\w+)/)
  12. ln = $1 if tname =~ (/(\s+\w+)/)
  13. u = User.new :firstname => fn,
  14. :lastname => ln,
  15. :mail => email
  16. u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-')
  17. u.password = 'trac'
  18. u.admin = true if TracPermission.find_by_username_and_action(username, 'admin')
  19. # finally, a default user is used if the new user is not valid
  20. u = User.find(:first) unless u.save
  21. end
  22. # Make sure he is a member of the project
  23. if project_member && !u.member_of?(@target_project)
  24. role = DEFAULT_ROLE
  25. if u.admin
  26. role = ROLE_MAPPING['admin']
  27. elsif TracPermission.find_by_username_and_action(username, 'developer')
  28. role = ROLE_MAPPING['developer']
  29. end
  30. Member.create(:user => u, :project => @target_project, :role => role)
  31. u.reload
  32. end
  33. u
  34. end
Add Comment
Please, Sign In to add comment