diff --git a/app/controllers/traces/base_controller.rb b/app/controllers/traces/base_controller.rb new file mode 100644 index 000000000..30970a5b8 --- /dev/null +++ b/app/controllers/traces/base_controller.rb @@ -0,0 +1,26 @@ +class Traces::BaseController < ApplicationController + + helper_method :observed_logged_user?, :observed_user + before_action :check_trace_system + + def observed_user + @_observed_user ||= (User.find_by_login(params[:user_id]) || User.find_by_id(params[:user_id])) + end + + def observed_logged_user? + observed_user.id == User.current&.id + end + + protected + def check_auth + return render_forbidden unless current_user.admin? || observed_logged_user? + end + + def check_trace_system + code, data, error = Trace::SystemInfoService.call(current_user.trace_token) + return render_ok({code: 501, data: {operate_time: data['operate_time']}, message: '系统维护中'}) if data['status'] === 0 + rescue + # 这里根据需求跳转到404 + return render_not_found + end +end \ No newline at end of file diff --git a/app/views/users/messages/_message.json.jbuilder b/app/views/users/messages/_message.json.jbuilder index 075613ce9..07040dfe5 100644 --- a/app/views/users/messages/_message.json.jbuilder +++ b/app/views/users/messages/_message.json.jbuilder @@ -6,6 +6,7 @@ json.status message["status"] json.content message["content"] json.notification_url message["notification_url"] json.source message["source"] +json.created_at message["created_at"] json.time_ago time_from_now(message["created_at"].to_time) case message["type"]