Advertisement
Guest User

Untitled

a guest
May 12th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.70 KB | None | 0 0
  1. require 'csv_tool'
  2.  
  3. class Core::UseradministrationController < ApplicationController
  4. setup_plugin do |p|
  5. p.assert_permission :index, :users_list
  6.  
  7. p.assert_permission :edit, :users_edit
  8. p.assert_permission :new, :users_edit
  9. p.assert_permission :update, :users_edit
  10. p.assert_permission :reset_pw, :users_edit
  11.  
  12. p.assert_permission :destroy, :users_delete
  13. end
  14.  
  15.  
  16. public
  17. def new
  18. @user = User.new
  19. @form = groups_with_pupils
  20. end
  21.  
  22. def create
  23. logger.debug 'Create new user...'
  24. group_name = params[:user][:group_mem]
  25.  
  26. User.transaction do
  27. (@user, @pass) = User.register(params[:user][:name],
  28. params[:user][:firstname])
  29. end
  30.  
  31. add_user_to_group group_name
  32.  
  33. respond_to do |format|
  34. unless @user.id.nil?
  35. @link = dataform_core_popup_url(@user.id)
  36. session[:user_info] = @pass
  37. log :message => "User '#{@user.username}': created",
  38. :module => 'Core/Users',
  39. :level => :info
  40. format.html
  41. format.xml { render :xml => @user, :status => :created,
  42. :location => @user }
  43. else
  44. @form = groups_with_pupils
  45. create_error_message_without_username
  46. format.html { render :action => :new }
  47. format.xml { render :xml => @user.errors,
  48. :status => :unprocessable_entity }
  49. end
  50. end
  51. end
  52.  
  53. def new_users
  54. @form = groups_with_pupils
  55. end
  56.  
  57. def create_users
  58. logger.debug 'Create new users...'
  59. users = get_input_content
  60. order = get_name_order
  61. group_name = params[:group_mem]
  62. users_array, @errors_array = CSV_Tool.read_user users,
  63. "auto", order
  64. @users_info = Array.new
  65. @users_info_html = Array.new
  66. @errors = Array.new
  67.  
  68. users_array.each do |user|
  69. User.transaction do
  70. (@user, @pass) = User.register(user[:name], user[:firstname])
  71. end
  72. if @user.id.nil?
  73. @errors << "Benutzer " + @user.firstname + " " + @user.name +
  74. " konnte nicht erstellt werden"
  75. else
  76. @users_info << Hash["user", @user, "pass", @pass]
  77. @users_info_html << "Benutzer: " + @user.firstname + " " + @user.name +
  78. ", Passwort: " + @pass
  79. log :message => "User '#{@user.username}': created",
  80. :module => 'Core/Users',
  81. :level => :info
  82. add_user_to_group group_name
  83. @users_link = usersdataform_core_popup_url(@user.id)
  84. end
  85. end
  86. session[:users_info] = @users_info
  87. end
  88.  
  89. def index
  90. @users = User.find(:all)
  91.  
  92. user_letters = sort_users
  93. generate_letters user_letters
  94.  
  95. apply_filter
  96. @users.sort! {|a, b| a.username <=> b.username} if @users
  97. end
  98.  
  99. def edit
  100. @user = User.find(params[:id])
  101. end
  102.  
  103. def update
  104. logger.debug 'Update user information...'
  105. @user = User.find(params[:id])
  106. respond_to do |format|
  107. if @user.update_attributes(params[:user])
  108. log :message => "User '#{@user.username}': edited",
  109. :module => 'Core/Users',
  110. :level => :info
  111. flash[:notice] = @messages['core']['update']['successful']
  112. format.html { redirect_to(:action => :index) }
  113. format.xml { head :ok }
  114. else
  115. create_error_message_without_username
  116. format.html { render :action => "edit" }
  117. format.xml { render :xml => @group.errors,
  118. :status => :unprocessable_entity }
  119. end
  120. end
  121. end
  122.  
  123. def resetpw
  124. logger.debug 'Reset password of user...'
  125. @user = User.find(params[:id])
  126. pass = @user.reset_password
  127. if @user.save
  128. log :message => "User '#{@user.username}': password resetted",
  129. :module => 'Core/Users',
  130. :level => :info
  131. if (not @user.email.nil?)
  132. MailService.deliver_send_pw(@user.email, @user.username, pass)
  133. end
  134. flash[:notice] = @messages['core']['create_new_pw']['successful'] + pass
  135. render(:action => :edit)
  136. else
  137. flash[:notice] = @messages['core']['error']
  138. render(:action => :edit)
  139. end
  140. end
  141.  
  142. def destroy
  143. logger.debug 'Delete user...'
  144. @user = User.find(params[:id])
  145. log :message => "User '#{@user.username}': deleted",
  146. :module => 'Core/Users',
  147. :level => :info
  148. @user.destroy
  149. @user = nil
  150. redirect_to :action => :index
  151. end
  152.  
  153.  
  154. private
  155. def groups_with_pupils
  156. sgroup = Group.find_by_name('Schueler')
  157. @form = Hash[*Group.find(:all).select{|group|
  158. group.parents_with_self.include?(sgroup)
  159. }.map{|group|
  160. [group.name, group.id]
  161. }.flatten]
  162. end
  163.  
  164. def create_error_message_without_username
  165. errorhash = Hash.new
  166. @user.errors.each do |attr,msg|
  167. errorhash[attr] = msg unless attr == 'username'
  168. end
  169. @user.errors.clear
  170. errorhash.each do |attr,msg|
  171. @user.errors.add(attr, msg)
  172. end
  173. end
  174.  
  175. def add_user_to_group group_name
  176. if (not @user.id.nil?)
  177. if group_name == 'pupil'
  178. group = Group.find params[:user_gid] ||
  179. Group.find_by_name('Schueler').id
  180. elsif group_name == 'teacher'
  181. group = Group.find_by_name 'Lehrer'
  182. elsif group_name == 'admin'
  183. group = Group.find_by_name 'Admin'
  184. end
  185. if group
  186. group.users << @user
  187. group.save
  188. end
  189. end
  190. end
  191.  
  192. def get_filter_letter
  193. letter = params[:letter]
  194. if not letter && @users
  195. letter = @users[0].username[0, 1]
  196. elsif not letter
  197. letter = 'x'
  198. end
  199. return letter.downcase
  200. end
  201.  
  202. def generate_letters(user_letters)
  203. @letters = []
  204. ('A'..'Z').each do |letter|
  205. @letters.push Array[letter.downcase, letter,
  206. user_letters.has_key?(letter)]
  207. end
  208. @letters.push Array['misc', 'andere', user_letters.has_key?('misc')]
  209. end
  210.  
  211. def sort_users
  212. letters = Hash.new
  213. @users.each do |user|
  214. prefix = user.username.match /^[a-z]/i
  215. key = 'misc'
  216. if prefix
  217. key = prefix[0].upcase
  218. end
  219.  
  220. letters[key] = Array.new unless letters[key]
  221. letters[key].push user
  222. end
  223. return letters
  224. end
  225.  
  226. def apply_filter
  227. letter = get_filter_letter
  228.  
  229. if @users
  230. @users.reject! do |user|
  231. if letter != 'misc'
  232. user.username[0, 1].downcase != letter
  233. else
  234. user.username.match(/^[a-z]/i)
  235. end
  236. end
  237. end
  238. end
  239.  
  240. def get_name_order
  241. if (params[:user_order] == 'firstname_name')
  242. order = 'firstname-name'
  243. else
  244. order = 'name-firstname'
  245. end
  246. order
  247. end
  248.  
  249. def get_input_content
  250. if (params[:user_input] == 'file')
  251. users = params[:users][:text_file].read
  252. else
  253. users = params[:users][:text_field]
  254. end
  255. users
  256. end
  257. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement