ぼざクリ タグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

45 lines
1.2 KiB

  1. class UsersController < ApplicationController
  2. def create
  3. user = User.create!(inheritance_code: SecureRandom.uuid, role: 'guest')
  4. render json: { code: user.inheritance_code,
  5. user: user.slice(:id, :name, :inheritance_code, :role) }
  6. end
  7. def verify
  8. user = User.find_by(inheritance_code: params[:code])
  9. render json: if user
  10. { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) }
  11. else
  12. { valid: false }
  13. end
  14. end
  15. def renew
  16. user = current_user
  17. user.inheritance_code = SecureRandom.uuid
  18. user.save!
  19. render json: { code: user.inheritance_code }
  20. end
  21. def me
  22. user = User.find_by(inheritance_code: params[:code])
  23. return head :not_found unless user
  24. render json: user.slice(:id, :name, :inheritance_code, :role)
  25. end
  26. def update
  27. user = current_user
  28. return head :unauthorized if user&.id != params[:id].to_i
  29. name = params[:name]
  30. return head :bad_request if name.blank?
  31. if user.update(name:)
  32. render json: user.slice(:id, :name, :inheritance_code, :role), status: :created
  33. else
  34. render json: user.errors, status: :unprocessable_entity
  35. end
  36. end
  37. end