@@ -109,30 +109,29 @@ impl LicenseManager for RealLicenseManager {
109109 GlobalInstance :: get ( )
110110 }
111111
112- fn check_enterprise_enabled ( & self , _license_key : String , _feature : Feature ) -> Result < ( ) > {
113- Ok ( ( ) )
114- // if license_key.is_empty() {
115- // return feature.verify_default(format!(
116- // "[LicenseManager] Feature '{}' requires Databend Enterprise Edition license. No license key found for tenant: {}. Learn more at {}",
117- // feature, self.tenant, LICENSE_URL
118- // ));
119- //}
120-
121- // if let Some(v) = self.cache.get(&license_key) {
122- // return self.verify_feature(v.value(), feature);
123- //}
124-
125- // match self.parse_license_impl(&license_key) {
126- // Ok(license) => {
127- // self.verify_feature(&license, feature)?;
128- // self.cache.insert(license_key, license);
129- // Ok(())
130- // }
131- // Err(e) => match e.code() == ErrorCode::LICENSE_KEY_EXPIRED {
132- // true => self.verify_if_expired(feature),
133- // false => Err(e),
134- // },
135- //}
112+ fn check_enterprise_enabled ( & self , license_key : String , feature : Feature ) -> Result < ( ) > {
113+ if license_key. is_empty ( ) {
114+ return feature. verify_default ( format ! (
115+ "[LicenseManager] Feature '{}' requires Databend Enterprise Edition license. No license key found for tenant: {}. Learn more at {}" ,
116+ feature, self . tenant, LICENSE_URL
117+ ) ) ;
118+ }
119+
120+ if let Some ( v) = self . cache . get ( & license_key) {
121+ return self . verify_feature ( v. value ( ) , feature) ;
122+ }
123+
124+ match self . parse_license_impl ( & license_key) {
125+ Ok ( license) => {
126+ self . verify_feature ( & license, feature) ?;
127+ self . cache . insert ( license_key, license) ;
128+ Ok ( ( ) )
129+ }
130+ Err ( e) => match e. code ( ) == ErrorCode :: LICENSE_KEY_EXPIRED {
131+ true => self . verify_if_expired ( feature) ,
132+ false => Err ( e) ,
133+ } ,
134+ }
136135 }
137136
138137 fn parse_license ( & self , raw : & str ) -> Result < JWTClaims < LicenseInfo > > {
@@ -198,48 +197,45 @@ impl RealLicenseManager {
198197 }
199198
200199 fn verify_license_expired ( l : & JWTClaims < LicenseInfo > ) -> Result < bool > {
201- Ok ( true )
202- // let now = Clock::now_since_epoch();
203- // match l.expires_at {
204- // Some(expire_at) => Ok(now > expire_at),
205- // None => Err(ErrorCode::LicenseKeyInvalid(
206- // "[LicenseManager] Cannot find valid expiration time",
207- // )),
208- //}
200+ let now = Clock :: now_since_epoch ( ) ;
201+ match l. expires_at {
202+ Some ( expire_at) => Ok ( now > expire_at) ,
203+ None => Err ( ErrorCode :: LicenseKeyInvalid (
204+ "[LicenseManager] Cannot find valid expiration time" ,
205+ ) ) ,
206+ }
209207 }
210208
211209 fn verify_feature ( & self , l : & JWTClaims < LicenseInfo > , feature : Feature ) -> Result < ( ) > {
212- Ok ( ( ) )
213- // if Self::verify_license_expired(l)? {
214- // return self.verify_if_expired(feature);
215- //}
216-
217- // if l.custom.features.is_none() {
218- // return Ok(());
219- //}
220-
221- // let verify_features = l.custom.features.as_ref().unwrap();
222- // for verify_feature in verify_features {
223- // if verify_feature.verify(&feature)? {
224- // return Ok(());
225- // }
226- //}
227-
228- // Err(ErrorCode::LicenseKeyInvalid(format!(
229- // "[LicenseManager] License does not support feature: {}. Supported features: {}",
230- // feature,
231- // l.custom.display_features()
232- //)))
210+ if Self :: verify_license_expired ( l) ? {
211+ return self . verify_if_expired ( feature) ;
212+ }
213+
214+ if l. custom . features . is_none ( ) {
215+ return Ok ( ( ) ) ;
216+ }
217+
218+ let verify_features = l. custom . features . as_ref ( ) . unwrap ( ) ;
219+ for verify_feature in verify_features {
220+ if verify_feature. verify ( & feature) ? {
221+ return Ok ( ( ) ) ;
222+ }
223+ }
224+
225+ Err ( ErrorCode :: LicenseKeyInvalid ( format ! (
226+ "[LicenseManager] License does not support feature: {}. Supported features: {}" ,
227+ feature,
228+ l. custom. display_features( )
229+ ) ) )
233230 }
234231
235232 fn verify_if_expired ( & self , feature : Feature ) -> Result < ( ) > {
236- Ok ( ( ) )
237- // feature.verify_default("").map_err(|_|
238- // ErrorCode::LicenseKeyExpired(format!(
239- // "[LicenseManager] Feature '{}' requires Databend Enterprise Edition license. License key expired for tenant: {}. Learn more at {}",
240- // feature, self.tenant, LICENSE_URL
241- // ))
242- //)
233+ feature. verify_default ( "" ) . map_err ( |_|
234+ ErrorCode :: LicenseKeyExpired ( format ! (
235+ "[LicenseManager] Feature '{}' requires Databend Enterprise Edition license. License key expired for tenant: {}. Learn more at {}" ,
236+ feature, self . tenant, LICENSE_URL
237+ ) )
238+ )
243239 }
244240}
245241
0 commit comments