This repository has been archived by the owner on Apr 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
BitwardenPlugin.php
71 lines (55 loc) · 1.98 KB
/
BitwardenPlugin.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
class BitwardenPlugin
{
private static $apiUrl = 'https://api.bitwarden.com/';
private static $apiToken = 'your_bitwarden_api_token';
public static function query($query)
{
$results = self::searchBitwarden($query);
$items = [];
foreach ($results as $result) {
$items[] = [
"Title" => $result["name"],
"SubTitle" => "Copy username and password",
"Score" => 100,
"IcoPath" => "path/to/icon.png",
"JsonRPCAction" => [
"method" => "CopyToClipboard",
"parameters" => [$result["username"], $result["password"]]
]
];
}
return ["result" => $items];
}
private static function searchBitwarden($query)
{
$url = self::$apiUrl . 'items?search=' . urlencode($query);
// Set up cURL options
$curlOptions = [
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . self::$apiToken,
'Content-Type: application/json',
],
CURLOPT_RETURNTRANSFER => true,
];
// Initialize cURL session
$ch = curl_init();
curl_setopt_array($ch, $curlOptions);
// Execute cURL session and get the response
$response = curl_exec($ch);
// Close cURL session
curl_close($ch);
$decodedResponse = json_decode($response, true);
$items = [];
foreach ($decodedResponse as $item) {
$items[] = [
"name" => isset($item['name']) ? $item['name'] : '',
"username" => isset($item['login']['username']) ? $item['login']['username'] : '',
"password" => isset($item['login']['password']) ? $item['login']['password'] : '',
];
}
return $items;
}
}
?>