mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 19:57:41 +00:00
121 lines
3.9 KiB
Swift
121 lines
3.9 KiB
Swift
/*
|
|
* JBoss, Home of Professional Open Source.
|
|
* Copyright Red Hat, Inc., and individual contributors
|
|
*
|
|
* Licensed 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.
|
|
*/
|
|
|
|
import Foundation
|
|
|
|
/**
|
|
Configuration object to setup an OAuth2 module
|
|
*/
|
|
public class Config {
|
|
/**
|
|
Applies the baseURL to the configuration.
|
|
*/
|
|
public let baseURL: String
|
|
|
|
/**
|
|
Applies the "callback URL" once request token issued.
|
|
*/
|
|
public let redirectURL: String
|
|
|
|
/**
|
|
Applies the "authorization endpoint" to the request token.
|
|
*/
|
|
public var authzEndpoint: String
|
|
|
|
/**
|
|
Applies the "access token endpoint" to the exchange code for access token.
|
|
*/
|
|
public var accessTokenEndpoint: String
|
|
|
|
/**
|
|
Endpoint for request to invalidate both accessToken and refreshToken.
|
|
*/
|
|
public let revokeTokenEndpoint: String?
|
|
|
|
/**
|
|
Endpoint for request a refreshToken.
|
|
*/
|
|
public let refreshTokenEndpoint: String?
|
|
|
|
/**
|
|
Endpoint for OpenID Connect to get user information.
|
|
*/
|
|
public let userInfoEndpoint: String?
|
|
|
|
/**
|
|
Boolean to indicate whether OpenID Connect on authorization code grant flow is used.
|
|
*/
|
|
public var isOpenIDConnect: Bool
|
|
|
|
/**
|
|
Applies the various scopes of the authorization.
|
|
*/
|
|
public var scopes: [String]
|
|
|
|
var scope: String {
|
|
get {
|
|
// Create a string to concatenate all scopes existing in the _scopes array.
|
|
var scopeString = ""
|
|
for scope in self.scopes {
|
|
scopeString += scope.urlEncode()
|
|
// If the current scope is other than the last one, then add the "+" sign to the string to separate the scopes.
|
|
if (scope != self.scopes.last) {
|
|
scopeString += "+"
|
|
}
|
|
}
|
|
return scopeString
|
|
}
|
|
}
|
|
|
|
/**
|
|
Applies the "client id" obtained with the client registration process.
|
|
*/
|
|
public let clientId: String
|
|
|
|
/**
|
|
Applies the "client secret" obtained with the client registration process.
|
|
*/
|
|
public let clientSecret: String?
|
|
|
|
/**
|
|
Account id is used with AccountManager to store tokens. AccountId is defined by the end-user
|
|
and can be any String. If AccountManager is not used, this field is optional.
|
|
*/
|
|
public var accountId: String?
|
|
|
|
/**
|
|
Boolean to indicate to either used a webview (if true) or an external browser (by default, false)
|
|
for authorization code grant flow.
|
|
*/
|
|
public var isWebView: Bool = false
|
|
|
|
public init(base: String, authzEndpoint: String, redirectURL: String, accessTokenEndpoint: String, clientId: String, refreshTokenEndpoint: String? = nil, revokeTokenEndpoint: String? = nil, isOpenIDConnect:Bool = false, userInfoEndpoint: String? = nil, scopes: [String] = [], clientSecret: String? = nil, accountId: String? = nil, isWebView: Bool = false) {
|
|
self.baseURL = base
|
|
self.authzEndpoint = authzEndpoint
|
|
self.redirectURL = redirectURL
|
|
self.accessTokenEndpoint = accessTokenEndpoint
|
|
self.refreshTokenEndpoint = refreshTokenEndpoint
|
|
self.revokeTokenEndpoint = revokeTokenEndpoint
|
|
self.isOpenIDConnect = isOpenIDConnect ?? false
|
|
self.userInfoEndpoint = userInfoEndpoint
|
|
self.scopes = scopes
|
|
self.clientId = clientId
|
|
self.clientSecret = clientSecret
|
|
self.accountId = accountId
|
|
self.isWebView = isWebView
|
|
}
|
|
} |