*/
private $required_options = array('client_id', 'client_secret', 'redirect_uri', 'scope');
+ /**
+ * New options with default values that has been added later (after creating config).
+ * They are added to config output.
+ *
+ * @see OAuth2Config::setAddedOptions()
+ */
+ private $added_options = array('name' => '');
+
/**
* Get (read) OAuth2 client config.
*
$config = $this->readConfig(self::CONFIG_FILE_PATH, self::CONFIG_FILE_FORMAT);
$is_valid = true;
if (!is_null($section)) {
- $config = array_key_exists($section, $config) ? $config[$section] : array();
+ $config = key_exists($section, $config) ? $config[$section] : array();
$is_valid = $this->validateConfig($config);
} else {
foreach ($config as $value) {
if ($is_valid === false) {
// no validity, no config
$config = array();
+ } else {
+ $this->setAddedOptions($config, $section);
}
return $config;
}
* case errors and it could cause save to log a private auth params.
*/
for ($i = 0; $i < count($this->required_options); $i++) {
- if (!array_key_exists($this->required_options[$i], $config)) {
+ if (!key_exists($this->required_options[$i], $config)) {
$is_valid = false;
$emsg = 'Invalid OAuth2 config. Missing ' . $this->required_options[$i] . ' option.';
$this->getModule('logging')->log(
}
return $is_valid;
}
+
+ /**
+ * Add "on the fly" new options to config.
+ * Note, this method should be used after config validation.
+ *
+ * @param array reference $config config to set added options.
+ * @param mixed $section determines if passed all config or only section
+ * @return none
+ */
+ private function setAddedOptions(&$config, $section = null) {
+ foreach ($this->added_options as $added_opt => $defval) {
+ if (is_null($section)) {
+ foreach($config as $key => $value) {
+ if (!key_exists($added_opt, $value)) {
+ $config[$key][$added_opt] = $defval;
+ }
+ }
+ } elseif (!key_exists($added_opt, $config)) {
+ $config[$added_opt] = $defval;
+ }
+ }
+ }
}
+?>
</com:TJuiProgressbar>
<img id="api_refresh" src="<%=$this->getPage()->getTheme()->getBaseUrl()%>/icon_refresh.png" alt="<%[ Refresh token ]%>" title="<%[ Refresh token ]%>" onclick="oAPIHome.init_oauth2_client();" />
</div>
+ <div>
+ <com:TActiveDropDownList ID="AuthParams" OnLoad="loadAuthParams" />
+ </div>
<div style="clear: left; margin-top: 60px;">
<select id="section" class="api_select">
<option value="none"><%[ Please select API endpoint ]%></option>
AlternatingItemStyle.BackColor="#4e4e50"
CssClass="tab-grid"
>
+ <com:TBoundColumn
+ HeaderText="<%[ Name ]%>"
+ DataField="name"
+ />
<com:TBoundColumn
ID="ClientIDColumn"
HeaderText="<%[ Client ID ]%>"
$params = array();
$oauth2_cfg = $this->getModule('oauth2_config')->getConfig();
if ($config['api']['auth_type'] === 'oauth2') {
- if (array_key_exists($config['api']['client_id'], $oauth2_cfg)) {
+ if (key_exists($config['api']['client_id'], $oauth2_cfg)) {
$this->main_client_id = $config['api']['client_id'];
+ }
$params = array(
'client_id' => $config['api']['client_id'],
'client_secret' => $oauth2_cfg[$config['api']['client_id']]['client_secret'],
'redirect_uri' => $oauth2_cfg[$config['api']['client_id']]['redirect_uri'],
'scope' => explode(' ', $oauth2_cfg[$config['api']['client_id']]['scope'])
);
- }
} elseif ($config['api']['auth_type'] === 'basic') {
$params = array(
'login' => $config['api']['login'],
$this->OAuth2ClientList->dataBind();
}
+ public function loadAuthParams($sneder, $param) {
+ $oauth2_cfg = $this->getModule('oauth2_config')->getConfig();
+ $clientids = array_keys($oauth2_cfg);
+ $this->AuthParams->DataSource = array_combine($clientids, $clientids);
+ $this->AuthParams->dataBind();
+ }
+
private function getBasicUsers() {
$basic_users = array();
$basic_cfg = $this->getModule('basic_apiuser')->getAllUsers();
/> <%[ (optional) ]%>
</div>
</div>
+ <div class="line">
+ <div class="text"><com:TLabel ForControl="APIOAuth2Name" Text="<%[ Short name: ]%>" /></div>
+ <div class="field">
+ <com:TTextBox
+ ID="APIOAuth2Name"
+ CssClass="textbox"
+ CausesValidation="false"
+ /> <%[ (optional) ]%>
+ </div>
+ </div>
</div>
<script type="text/javascript">
var wizard_validation = function() {
$this->AuthBasic->Checked = false;
$this->AuthOAuth2->Checked = true;
$oauth2_cfg = $this->getModule('oauth2_config')->getConfig();
- if (array_key_exists($this->config['api']['client_id'], $oauth2_cfg)) {
+ if (key_exists($this->config['api']['client_id'], $oauth2_cfg)) {
$this->APIOAuth2ClientId->Text = $this->config['api']['client_id'];
$this->APIOAuth2ClientSecret->Text = $oauth2_cfg[$this->config['api']['client_id']]['client_secret'];
$this->APIOAuth2RedirectURI->Text = $oauth2_cfg[$this->config['api']['client_id']]['redirect_uri'];
$this->APIOAuth2Scope->Text = $oauth2_cfg[$this->config['api']['client_id']]['scope'];
$this->APIOAuth2BconsoleCfgPath->Text = $oauth2_cfg[$this->config['api']['client_id']]['bconsole_cfg_path'];
+ $this->APIOAuth2Name->Text = $oauth2_cfg[$this->config['api']['client_id']]['name'];
}
}
}
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['redirect_uri'] = $this->APIOAuth2RedirectURI->Text;
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['scope'] = $this->APIOAuth2Scope->Text;
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['bconsole_cfg_path'] = $this->APIOAuth2BconsoleCfgPath->Text;
+ $oauth2_cfg[$this->APIOAuth2ClientId->Text]['name'] = $this->APIOAuth2Name->Text;
$this->getModule('oauth2_config')->setConfig($oauth2_cfg);
}
$this->goToDefaultPage();
$config = $this->getModule('api_config')->getConfig();
if ($this->getAuthType() === 'basic') {
$users = $this->getModule('basic_apiuser')->getAllUsers();
- if (!array_key_exists($this->APIBasicLogin->Text, $users)) {
+ if (!key_exists($this->APIBasicLogin->Text, $users)) {
$result = $this->getModule('basic_apiuser')->setUsersConfig(
$this->APIBasicLogin->Text,
$this->APIBasicPassword->Text
}
} elseif ($this->getAuthType() === 'oauth2') {
$oauth2_cfg = $this->getModule('oauth2_config')->getConfig();
- if (!array_key_exists($this->APIOAuth2ClientId->Text, $oauth2_cfg)) {
+ if (!key_exists($this->APIOAuth2ClientId->Text, $oauth2_cfg)) {
$oauth2_cfg[$this->APIOAuth2ClientId->Text] = array();
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['client_id'] = $this->APIOAuth2ClientId->Text;
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['client_secret'] = $this->APIOAuth2ClientSecret->Text;
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['redirect_uri'] = $this->APIOAuth2RedirectURI->Text;
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['scope'] = $this->APIOAuth2Scope->Text;
$oauth2_cfg[$this->APIOAuth2ClientId->Text]['bconsole_cfg_path'] = $this->APIOAuth2BconsoleCfgPath->Text;
+ $oauth2_cfg[$this->APIOAuth2ClientId->Text]['name'] = $this->APIOAuth2Name->Text;
$result = $this->getModule('oauth2_config')->setConfig($oauth2_cfg);
} else {
$exists = true;
/> <%[ (optional) ]%>
</div>
</div>
+ <div class="line">
+ <div class="text"><com:TLabel ForControl="APIOAuth2Name" Text="<%[ Short name: ]%>" /></div>
+ <div class="field">
+ <com:TTextBox
+ ID="APIOAuth2Name"
+ CssClass="textbox"
+ CausesValidation="false"
+ /> <%[ (optional) ]%>
+ </div>
+ </div>
</div>
<div class="center" style="width: 550px;<%=($this->getShowButtons() ? '' : 'display: none;')%>">
<com:BButton