demarches-normaliennes/app/fields/jwt_field.rb
2024-09-17 14:26:06 +02:00

26 lines
715 B
Ruby

# frozen_string_literal: true
require "administrate/field/base"
class JwtField < Administrate::Field::Base
def to_s
if data.present?
begin
decoded_token = JWT.decode(data, nil, false)
return "Token présent, sans expiration" unless decoded_token[0].key?('exp')
expiration = Time.zone.at(decoded_token[0]['exp'])
if expiration < Time.zone.now
"Token présent, expiré le #{expiration.strftime('%d/%m/%Y à %H:%M')}"
else
"Token présent, expirera le #{expiration.strftime('%d/%m/%Y à %H:%M')}"
end
rescue JWT::DecodeError => e
"Token invalide : #{e.message}"
end
else
"Pas de token"
end
end
end