Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require File.expand_path('../../config/boot', __FILE__)
  3.  
  4. options = { :environment => (ENV['RAILS_ENV'] || "development").dup }
  5. ENV["RAILS_ENV"] = options[:environment]
  6. RAILS_ENV.replace(options[:environment]) if defined?(RAILS_ENV)
  7.  
  8. require RAILS_ROOT + '/config/environment'
  9.  
  10. ### run this script using runner
  11. require 'optparse'
  12. require 'readline'
  13. require 'pp'
  14. # require 'rubygems'
  15. # require 'highline/import'
  16. #require 'ruport'
  17. #require 'redmine'
  18. def to_bool(str = '')
  19. return true if str == true || str =~ (/(true|t|yes|y|1)$/i)
  20. return false if str == false || str.blank? || str =~ (/(false|f|no|n|0)$/i)
  21. raise ArgumentError.new("invalid value for Boolean: \"#{str}\"")
  22. end
  23. ###
  24. def list_users
  25. puts "%4s %-20s %-20s %-20s" % %w(ID LOGIN FIRST_NAME LAST_NAME)
  26. puts "-" * 64
  27. User.all.sort! do |a,b|
  28. a.id <=> b.id
  29. end.each do |user|
  30. puts "%4d %-20s %-20s %-20s" % [user.id ,user.login, user.firstname, user.lastname]
  31. end
  32. end
  33. # CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "login" varchar(30) DEFAULT '' NOT NULL, "hashed_password" varchar(40) DEFAULT '' NOT NULL, "firstname" varchar(30) DEFAULT '' NOT NULL, "lastname" varchar(30) DEFAULT '' NOT NULL, "mail" varchar(60) DEFAULT '' NOT NULL, "admin" boolean DEFAULT 'f' NOT NULL, "status" integer DEFAULT 1 NOT NULL, "last_login_on" datetime, "language" varchar(5) DEFAULT '', "auth_source_id" integer, "created_on" datetime, "updated_on" datetime, "type" varchar(255), "identity_url" varchar(255), "mail_notification" varchar(255) DEFAULT '' NOT NULL, "salt" varchar(64));
  34. def readPassword
  35. ### works only under linux ,but other options include third party
  36. ### gems which is overkill .
  37. print "Password >"
  38. system "stty -echo"
  39. password = gets.chomp
  40. system "stty echo"
  41. print "\nRetype Password >"
  42. system "stty -echo"
  43. retype_password = gets.chomp
  44. system "stty echo"
  45. print "\n"
  46. res= {
  47. :success => (retype_password == password) ,
  48. :password => password
  49. }
  50. return res
  51. end
  52.  
  53. def add_user
  54. stty_save = `stty -g`.chomp
  55. begin
  56. login = Readline.readline('login > ', true)
  57. first_name = Readline.readline('First Name > ', true)
  58. last_name = Readline.readline('Last Name > ', true)
  59. mail = Readline.readline('mail > ', true)
  60. admin = Readline.readline('admin > ', true)
  61. # password = Readline.readline('admin > ', true)
  62.  
  63. oUser=User.new(:firstname => first_name,
  64. :lastname => last_name,
  65. :mail => mail)
  66. ### The login & admin are attr_protected
  67. oUser.login = login
  68. oUser.admin = to_bool(admin)
  69. hPassword=readPassword
  70. while !hPassword[:success]
  71. puts "Error in password typing"
  72. hPassword=readPassword
  73. end
  74. oUser.password = hPassword[:password]
  75. # pp oUser
  76. # exit
  77. if !oUser.save
  78. pp oUser.errors
  79. end
  80. rescue Interrupt => e
  81. system('stty', stty_save) # Restore
  82. exit
  83. end
  84. end
  85. def remove_user(id = nil)
  86. return if id.nil?
  87. oUser=User.find_by_id(id)
  88. oUser.delete if !oUser.nil?
  89. end
  90.  
  91. def change_password(id = nil)
  92. return if id.nil?
  93. oUser=User.find_by_id(id)
  94. oPassword=readPassword
  95. while !oPassword[:success]
  96. puts "Error in password typing"
  97. oPassword=readPassword
  98. end
  99. oUser.password = oPassword[:password]
  100. begin
  101. oUser.save!
  102. rescue Exception => e
  103. puts "Error saving new password",e.message
  104. end
  105. end
  106. options = {}
  107.  
  108. optparse = OptionParser.new do |opts|
  109. opts.on "-l","--list","List the exisitng redmine users " do
  110. list_users
  111. end
  112. opts.on "-a","--add","Add a new user (interactive mode) " do
  113. add_user
  114. end
  115. opts.on "-d","--delete","=MANDATORY","Add a new user (interactive mode) " do |duser|
  116. remove_user duser
  117. end
  118. opts.on "-p","--password","=MANDATORY","Change user password " do |duser|
  119. change_password duser
  120. end
  121. # opts.on "-u" ,"--user","=MANDATORY","The username to set password for" do
  122. # options[:user]=true
  123. # end
  124. # opts.on "-p" ,"--password","=MANDATORY","The password to set" do
  125. # options[:password]=true
  126. # end
  127. end
  128. # puts options[:user].nil?
  129. # abort
  130. # exit
  131. begin
  132. optparse.parse!
  133. # if options[:user].nil? != options[:password].nil?
  134. # raise new Exception
  135. # end
  136. rescue
  137. ### TODO: this is wrong since $! is a runner
  138. puts $!
  139. puts optparse
  140. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement