@@ -15,39 +15,21 @@ class Api
1515 params : Models ::User ::Input . documentation_in_body ,
1616 failure : [ { code : 422 , message : 'Invalid input' } ]
1717 post do
18- result = UserValidator . new ( params ) . validate
19-
20- if result . success?
21- @user = Models ::User . create ( result . output )
22- ConfirmNewUserJob . perform_async ( @user . email )
23-
24- present @user
25- else
26- api_response ( error_type : :invalid , errors : result . messages )
18+ CreateUser . ( params ) do
19+ ok { |user | present user }
20+ fail { |errors | api_response errors }
2721 end
2822 end
2923
3024 route_param :id do
31- before do
32- @user = Models ::User . with_pk! ( params [ :id ] )
33- end
34-
3525 desc "Resets a user's password" ,
3626 params : Models ::PasswordReset ::Input . documentation_in_body ,
3727 success : { code : 204 } ,
3828 failure : [ { code : 422 , message : 'Invalid input' } , { code : 401 , message : 'Invalid verification code' } ]
3929 patch :reset_password do
40- result = ResetPasswordValidator . new ( params ) . validate
41-
42- if !@user . valid_reset_password_code? ( result . output [ :verification_code ] )
43- api_response ( error_type : :unauthorized , errors : { reason : "Invalid code" } )
44- elsif result . failure?
45- api_response ( error_type : :invalid , errors : result . messages )
46- else
47- @user . update ( password : result . output [ :new_password ] )
48- ConfirmResetPasswordJob . perform_async ( @user . email )
49-
50- body false
30+ ResetPassword . ( params ) do
31+ ok { body false }
32+ fail { |errors | api_response errors }
5133 end
5234 end
5335
@@ -57,16 +39,9 @@ class Api
5739 failure : [ { code : 422 , message : 'Invalid input' } , { code : 403 , message : 'Unauthorized operation attempt' } ] ,
5840 headers : { 'Authorization' => { description : 'JWT Authorization Token' , required : true } }
5941 put do
60- result = UserValidator . new ( params ) . validate
61-
62- if current_user . nil? || current_user . cannot? ( :edit , @user )
63- api_response ( error_type : :forbidden , errors : { reason : "Permission denied" } )
64- elsif result . failure?
65- api_response ( error_type : :invalid , errors : result . messages )
66- else
67- @user . update ( result . output )
68-
69- present @user
42+ UpdateUser . ( current_user , params ) do
43+ ok { |user | present user }
44+ fail { |errors | api_response errors }
7045 end
7146 end
7247 end
0 commit comments