Jira API получает вложение

0

Я написал код, который отображает список вложений. Проблема в том, что я хочу, чтобы пользователь мог просматривать вложение без входа в систему. Есть ли способ аутентификации для пользователя? Вот мой код:

 //to get cases.  this returns a list of attachments, with the url in Jira

  $attachments = $jira_case->issues[0]->fields->attachment;

   //iterates over the lists and creates links
   foreach ($attachments as $i=> $attachment) {
      $html .="
      <tr>
          <td style='padding-left: 10px; width:0px; padding-top: 20px;' colspan='3'>
          ". ($i+1) .") <a target = '_blank' href ='". $attachment->content ."'>". nl2br($attachment->filename) ."</a>
          </td>
     </tr>";
}

Проблема в том, что когда пользователь нажимает на ссылку, если они не вошли в систему, им будет предложено войти в систему. Я не хочу этого, так как это мое приложение для аутентификации, так что пользователю не нужна учетная запись jira, Это возможно? Может быть, пропустив какой-то токен?

Ясон

  • 0
    Вы можете использовать служебную учетную запись, которая может просматривать все материалы в этом проекте.
Теги:
jira
jira-rest-api

2 ответа

1
Лучший ответ

Если кто-то еще задается вопросом, как это сделать:

$url = "https://mySite.atlassian.net/secure/attachment/". $attachment_id ."/". $attachment_name ."?os_username=". $this->jira_user_name ."&os_password=" . $this->jira_password;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

$file = curl_exec($ch);
curl_close($ch);

if($file){
     header('Content-Description: File Transfer');
     header('Content-Type: application/octet-stream');
     header('Content-Disposition: attachment; filename='.$attachment_name);
     header('Expires: 0');
     header('Cache-Control: must-revalidate');
     header('Pragma: public');
     echo ($file);
     exit;
}else{
     throw new Exception("Error:  file now found.");
}
2

С точки зрения JIRA запрос, который поступает из пользовательского браузера, не содержит заголовка проверки подлинности. JIRA использует тот же набор разрешений для вложений, что и для проблем, поэтому всякий раз, когда пользователь может просматривать конкретную проблему JIRA, он также может видеть (и загружать) вложения. Поэтому, если вы не сделали свой проект {s} и issue {s} доступным для анонимного пользователя, кто-то с соответствующими разрешениями должен пройти аутентификацию. Если вы хотите, чтобы пользователи могли загружать вложения только через ваше приложение, как пользователь вашего приложения, вам необходимо прокси-сервер каким-то образом через ваше приложение. Вместо того, чтобы показывать ссылки на страницы, указывающие непосредственно на JIRA, вам нужно создать ссылки, указывающие на ваш сервер, тогда ваш сервер должен связаться с JIRA для вложения и пройти аутентификацию себя как пользователя вашего приложения (с разрешениями на просмотр проблемы, содержащей вложения), и передать ответ от JIRA на конечного пользователя.

  • 0
    Спасибо, это именно то, что я сделал. Я выложу код, если кто-нибудь захочет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню