forked from community/device-mgt-core
Implement login cache See merge request entgra/carbon-device-mgt!751revert-70ac1926
commit
49a816fd3a
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.ui.request.interceptor.cache;
|
||||||
|
|
||||||
|
import io.entgra.ui.request.interceptor.util.HandlerConstants;
|
||||||
|
|
||||||
|
import javax.cache.Cache;
|
||||||
|
import javax.cache.CacheManager;
|
||||||
|
import javax.cache.Caching;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains necessary functions to manage oAuth app cache during login handling
|
||||||
|
*/
|
||||||
|
public class LoginCacheManager {
|
||||||
|
|
||||||
|
private CacheManager cacheManager = null;
|
||||||
|
private Cache<OAuthAppCacheKey, OAuthApp> cache = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the cache manager if it is not already initialized
|
||||||
|
*/
|
||||||
|
public void initializeCacheManager() {
|
||||||
|
cacheManager = Caching.getCacheManagerFactory().getCacheManager(HandlerConstants.LOGIN_CACHE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Persists OAuth app cache if it is not already persisted
|
||||||
|
*
|
||||||
|
* @param oAuthAppCacheKey - The identifier key of the cache
|
||||||
|
* @param oAuthApp - The value of the cache which contains OAuth app data
|
||||||
|
*/
|
||||||
|
public void addOAuthAppToCache(OAuthAppCacheKey oAuthAppCacheKey, OAuthApp oAuthApp) {
|
||||||
|
cache = cacheManager.getCache(HandlerConstants.LOGIN_CACHE);
|
||||||
|
cache.put(oAuthAppCacheKey, oAuthApp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the OAuth app cache
|
||||||
|
*
|
||||||
|
* @param oAuthAppCacheKey - The key to identify the cache
|
||||||
|
* @return - Returns OAuthApp object
|
||||||
|
*/
|
||||||
|
public OAuthApp getOAuthAppCache(OAuthAppCacheKey oAuthAppCacheKey) {
|
||||||
|
cache = cacheManager.getCache(HandlerConstants.LOGIN_CACHE);
|
||||||
|
return cache.get(oAuthAppCacheKey);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.ui.request.interceptor.cache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The data object used for Login Cache
|
||||||
|
*/
|
||||||
|
public class OAuthApp {
|
||||||
|
|
||||||
|
private String appName;
|
||||||
|
private String appOwner;
|
||||||
|
private String clientId;
|
||||||
|
private String clientSecret;
|
||||||
|
private String encodedClientApp;
|
||||||
|
|
||||||
|
public OAuthApp(String appName, String appOwner, String clientId, String clientSecret, String encodedClientApp) {
|
||||||
|
this.appName = appName;
|
||||||
|
this.appOwner = appOwner;
|
||||||
|
this.clientId = clientId;
|
||||||
|
this.clientSecret = clientSecret;
|
||||||
|
this.encodedClientApp = encodedClientApp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppName() {
|
||||||
|
return appName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppName(String appName) {
|
||||||
|
this.appName = appName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppOwner() {
|
||||||
|
return appOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppOwner(String appOwner) {
|
||||||
|
this.appOwner = appOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClientId() {
|
||||||
|
return clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClientId(String clientId) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClientSecret() {
|
||||||
|
return clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClientSecret(String clientSecret) {
|
||||||
|
this.clientSecret = clientSecret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEncodedClientApp() {
|
||||||
|
return encodedClientApp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEncodedClientApp(String encodedClientApp) {
|
||||||
|
this.encodedClientApp = encodedClientApp;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.ui.request.interceptor.cache;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The key object used for Login Cache
|
||||||
|
*/
|
||||||
|
public class OAuthAppCacheKey {
|
||||||
|
|
||||||
|
private String appName;
|
||||||
|
private String appOwner;
|
||||||
|
private volatile int hashCode;
|
||||||
|
|
||||||
|
public OAuthAppCacheKey(String appName, String appOwner) {
|
||||||
|
this.appName = appName;
|
||||||
|
this.appOwner = appOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppName() {
|
||||||
|
return appName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppName(String appName) {
|
||||||
|
this.appName = appName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppOwner() {
|
||||||
|
return appOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppOwner(String appOwner) {
|
||||||
|
this.appOwner = appOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (obj instanceof OAuthAppCacheKey) {
|
||||||
|
final OAuthAppCacheKey other = (OAuthAppCacheKey) obj;
|
||||||
|
String thisId = this.appName + "-" + this.appOwner;
|
||||||
|
String otherId = other.appName + "-" + other.appOwner;
|
||||||
|
return thisId.equals(otherId);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (hashCode == 0) {
|
||||||
|
hashCode = Objects.hash(appName, appOwner);
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue