Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def self.find_or_create_user(username, project_member = false)
- return User.anonymous if username.blank?
- u = User.find_by_login(username)
- if !u
- # Create a new user if not found
- #temail = TracAttribute.find_by_sql("SELECT value FROM #{TracAttribute.table_name} WHERE sid='#{username}' AND name='email'")
- temail = TracAttribute.find(:first, :limit => 1, :conditions => "sid = '#{username}' AND name='email'")
- email = encode(temail)
- tname = TracAttribute.find_by_sql("SELECT value FROM #{TracAttribute.table_name} WHERE sid='#{username}' AND name='name'")
- fn = $1 if tname =~ (/(\w+)/)
- ln = $1 if tname =~ (/(\s+\w+)/)
- u = User.new :firstname => fn,
- :lastname => ln,
- :mail => email
- u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-')
- u.password = 'trac'
- u.admin = true if TracPermission.find_by_username_and_action(username, 'admin')
- # finally, a default user is used if the new user is not valid
- u = User.find(:first) unless u.save
- end
- # Make sure he is a member of the project
- if project_member && !u.member_of?(@target_project)
- role = DEFAULT_ROLE
- if u.admin
- role = ROLE_MAPPING['admin']
- elsif TracPermission.find_by_username_and_action(username, 'developer')
- role = ROLE_MAPPING['developer']
- end
- Member.create(:user => u, :project => @target_project, :role => role)
- u.reload
- end
- u
- end
Add Comment
Please, Sign In to add comment