luckybooru/src/actions/mixins/api/auth/require_auth_token.cr

35 lines
794 B
Crystal

module Api::Auth::RequireAuthToken
macro included
before require_auth_token
end
private def require_auth_token
if current_user?
continue
else
json auth_error_json, 401
end
end
private def auth_error_json
ErrorSerializer.new(
message: "Not authenticated.",
details: auth_error_details
)
end
private def auth_error_details : String
if auth_token
"The provided authentication token was incorrect."
else
"An authentication token is required. Please include a token in an 'auth_token' param or 'Authorization' header."
end
end
# Tells the compiler that the current_user is not nil since we have checked
# that the user is signed in
private def current_user : User
current_user?.not_nil!
end
end