users_controller.rb 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. class UsersController < ApplicationController
  2. before_filter :authentication_check, :except => [:create, :password_reset_send, :password_reset_verify]
  3. # GET /users
  4. def index
  5. @users = User.all
  6. @users_all = []
  7. @users.each {|user|
  8. @users_all.push User.user_data_full( user.id )
  9. }
  10. render :json => @users_all
  11. end
  12. # GET /users/1
  13. def show
  14. @user = User.user_data_full( params[:id] )
  15. render :json => @user
  16. end
  17. # POST /users
  18. def create
  19. @user = User.new(params[:user])
  20. @user.created_by_id = (current_user && current_user.id) || 1
  21. if @user.save
  22. # if it's a signup, add user to customer role
  23. if @user.created_by_id == 1
  24. # check if it's first user
  25. count = User.all.count()
  26. group_ids = []
  27. role_ids = []
  28. # add first user as admin/agent and to all groups
  29. if count <= 2
  30. Role.where( :name => [ 'Admin', 'Agent'] ).each { |role|
  31. role_ids.push role.id
  32. }
  33. Group.all().each { |group|
  34. group_ids.push group.id
  35. }
  36. # everybody else will go as customer per default
  37. else
  38. role_ids.push Role.where( :name => 'Customer' ).first.id
  39. end
  40. @user.role_ids = role_ids
  41. @user.group_ids = group_ids
  42. # else do assignment as defined
  43. else
  44. if params[:role_ids]
  45. @user.role_ids = params[:role_ids]
  46. end
  47. if params[:group_ids]
  48. @user.group_ids = params[:group_ids]
  49. end
  50. end
  51. # send inviteation if needed
  52. if params[:invite]
  53. # logger.debug('IIIIIIIIIIIIIIIIIIIIIIIIIIIIII')
  54. # exit '123'
  55. end
  56. render :json => @user, :status => :created
  57. else
  58. render :json => @user.errors, :status => :unprocessable_entity
  59. end
  60. end
  61. # PUT /users/1
  62. def update
  63. @user = User.find(params[:id])
  64. if @user.update_attributes(params[:user])
  65. if params[:role_ids]
  66. @user.role_ids = params[:role_ids]
  67. end
  68. if params[:group_ids]
  69. @user.group_ids = params[:group_ids]
  70. end
  71. if params[:organization_ids]
  72. @user.organization_ids = params[:organization_ids]
  73. end
  74. @user = User.user_data_full( params[:id] )
  75. render :json => @user, :status => :ok
  76. else
  77. render :json => @user.errors, :status => :unprocessable_entity
  78. end
  79. end
  80. # DELETE /users/1
  81. def destroy
  82. @user = User.find(params[:id])
  83. @user.destroy
  84. head :ok
  85. end
  86. # POST /users/reset_password
  87. def password_reset_send
  88. success = User.password_reset_send( params[:username] )
  89. if success
  90. render :json => { :message => 'ok' }, :status => :ok
  91. else
  92. render :json => { :message => 'failed' }, :status => :unprocessable_entity
  93. end
  94. end
  95. # get /users/verify_password/:hash
  96. def password_reset_verify
  97. if params[:password]
  98. success = User.password_reset_via_token( params[:token], params[:password] )
  99. else
  100. success = User.password_reset_check( params[:token] )
  101. end
  102. if success
  103. render :json => { :message => 'ok' }, :status => :ok
  104. else
  105. render :json => { :message => 'failed' }, :status => :unprocessable_entity
  106. end
  107. end
  108. end