{"version":3,"sources":["components/messages.js","models/Ajax.js","components/Constants.js","components/Utils.js","components/Navigation.js","components/NavigationUser.js","components/Header.js","models/vault.js","components/Footer.js","components/AlertBox.js","components/Index.js","components/DialogBox.js","components/ModelRow.js","models/keypairs.js","models/models.js","components/ModelAssertion.js","components/ModelList.js","components/ModelEdit.js","components/KeypairAdd.js","components/KeypairEdit.js","components/KeypairGenerate.js","components/KeypairStore.js","components/AccountList.js","models/accounts.js","components/AccountForm.js","components/AccountEdit.js","components/AccountKeyForm.js","components/KeypairList.js","components/KeypairStatus.js","components/Keypair.js","components/SigningLogRow.js","models/signinglog.js","components/SigningLogFilter.js","components/Pagination.js","components/SigningLog.js","components/SubstoreForm.js","components/SubstoreList.js","models/assertions.js","components/SystemUserForm.js","components/NavigationSubmenu.js","components/UserRow.js","models/users.js","components/UserList.js","components/UserEdit.js","App.js","index.js"],"names":["intlData","zh","en","Ajax","getToken","this","get","getAuthToken","url","qs","request","headers","post","data","then","response","json","put","delete","Role","sections","sectionFromPath","path","find","section","startsWith","sectionIdFromPath","parts","split","slice","T","message","lang","window","AppState","getLocale","Messages","parseResponse","includes","JSON","parse","body","error_code","statusCode","formatError","error_subcode","isLoggedIn","token","isUserStandard","isUser","isUserAdmin","isUserSuperuser","roleAsString","role","str","saveAccount","account","sessionStorage","setItem","ID","AuthorityID","Assertion","ResellerAPI","getAccount","parseInt","getItem","linksSuperuser","linksAdmin","linksStandard","Navigation","props","handleAccountChange","e","preventDefault","accountId","target","getAttribute","accounts","filter","a","handleAccountMenu","onAccountChange","setState","accountMenu","state","length","name","selectedAccount","className","href","onClick","aria-controls","aria-expanded","aria-haspopup","id","aria-hidden","aria-label","map","key","data-key","links","renderAccounts","l","active","link","Component","NavigationUser","renderUser","renderUserLogout","LANGUAGES","Header","handleLanguageChange","language","value","setLocale","rerender","handleToggleMenu","document","querySelector","classList","toggle","src","alt","width","height","title","Vault","version","Footer","getVersion","self","AlertBox","Index","error","renderError","DialogBox","classYes","classNo","small","handleCancelClick","handleYesClick","ModelRow","copyToClipboard","el","createElement","appendChild","select","execCommand","removeChild","model","confirmDelete","concat","deleteModel","cancelDelete","fingerprintModel","fingerprint","fingerprintUser","renderActions","showAssert","Keypair","list","keypairId","update","keypair","enable","disable","create","authorityId","keyName","generate","status","assertion","keyId","register","Models","modelId","modelAssertion","ModelAssertion","handleChangePrivateKeyModel","handleChangeSeries","handleChangeArchitecture","handleChangeRevision","handleChangeBase","handleChangeClassic","handleBlurClassic","toLowerCase","handleChangeDisplayName","handleChangeGadget","handleChangeKernel","handleChangeStore","handleChangeSnaps","handleSave","location","model_id","keypairs","getKeypairs","Keypairs","success","k","ma","colSpan","htmlFor","keypair_id","onChange","kpr","Active","KeyID","type","placeholder","min","onBlur","defaultValue","cancel","ModelList","handleRefresh","refresh","handleShowAssert","assertId","handleDelete","handleDeleteModel","models","mdl","handleDeleteModelCancel","renderTable","ModelEdit","handleChangeBrand","handleChangeModel","handleChangeAPIKey","handleChangePrivateKey","handleChangePrivateKeyUser","handleSaveClick","hideForm","setTitle","getModel","disabled","KeyName","KeypairAdd","handleChangeAuthorityId","handleChangeKeyName","handleChangeKey","handleFileUpload","reader","FileReader","file","files","onload","upload","result","readAsDataURL","getAccounts","KeypairEdit","getKeypair","KeypairGenerate","KeypairStore","keys","keyFromKeypair","handleChangeName","handleChangeEmail","email","handleChangePassword","password","handleChangeOTP","otp","AccountList","getModels","acc","m","messages","push","index","array","renderKeyStatus","ref","renderAccountKeys","Account","stores","storeNew","accountID","store","storeUpdate","storeDelete","AccountForm","Accounts","AccountEdit","handleChangeAccount","handleChangeReseller","checked","AccountKeyForm","handleChangeKeypair","KeypairList","handleToggle","keypr","aria-checked","aria-labelledby","renderRow","KeypairStatus","poll","setTimeout","bind","done","onRefresh","SigningLogRow","log","make","serialnumber","revision","moment","created","format","SigningLog","fromID","listForAccount","authorityID","offset","filters","download","all","lines","logs","forEach","d","line","join","csvContent","encodedUri","encodeURI","downloadLink","click","SigningLogFilter","expanded","expansionClick","items","item","i","handleItemClick","selected","Pagination","pageUp","pages","calculatePages","page","signalPageChange","pageDown","query","maxRecords","startRow","pageChange","filterString","totalLogs","searchText","onSearchChange","renderPaging","onDownload","handleExpansionClick","filterModels","getSigningLogs","SigningLogModel","total_count","getSigningLogFilters","handleSearchChange","handleDownload","endRow","n","renderRows","SubstoreForm","handleChangeSerial","handleChangeSubstore","handleChangeFromModel","handleChangeModelName","b","substore","fromModelID","modelname","onCancel","onSave","SubstoreList","handleShowNew","showNew","showEdit","showDelete","handleShowEdit","substores","s","handleShowDelete","handleSubstoreChange","field","handleSaveSubstore","handleDeleteSubstore","handleCancelSubstore","fromModel","renderSubstore","assert","newUTCDate","Date","toUTCString","SystemUserForm","onShowForm","handleChangeUsername","username","handleChangeSinceDateTime","date","since","handleChangeUntilDateTime","until","handleAddEmptySerialField","tmpSerials","serials","handleAddSerialNumber","dataset","onSubmit","form","toISOString","validate","submitAssertion","startDate","endDate","setFullYear","getFullYear","encodeURIComponent","test","downloadAssertion","required","serial","data-index","substr","NavigationSubmenu","tabIndex","aria-selected","UserRow","user","deleteUser","Username","Name","Email","APIKey","Users","userId","getotheraccounts","UserList","handleDeleteUser","users","handleDeleteUserCancel","getUsers","UserEdit","buildSelectBoxOption","val","handleChangeRole","requestData","buildRequestData","handleClickAccount","assignedAccounts","indexOf","splice","availableAccounts","getUser","getAllAccounts","accountsToAuthorityIDs","accs","style","data-account","readOnly","renderAccountSelect","history","createHistory","submenuModels","App","updateDataForRoute","listen","handleNavigation","scrollTo","currentSection","pathname","getSubstores","sub","subSectionIdFromPath","URLSearchParams","search","renderKeypairs","renderModels","renderUsers","container","getElementById","localStorage","render","callback","locale","ReactDOM","resp","enableUserAuth","jwt","authorization","jwtDecode","unmount","unmountComponentAtNode"],"mappings":"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","file":"static/js/main.0f7d5b95.chunk.js","sourcesContent":["/*\n * Copyright (C) 2016-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\n\nvar intlData = {\n zh: {},\n\n en: {\n \"account\": \"Account\",\n \"account-description\": \"The authority-id for the account\",\n \"account-keys\": \"Account Key Assertions\",\n \"accounts\": \"Accounts\",\n \"activate\": \"Activate\",\n \"active\": \"Active\",\n \"add\": \"Add\",\n \"add-new-model\": \"Add a new model\",\n \"add-new-signing-key\": \"Import a signing key\",\n \"add-new-user\": \"Add a new user\",\n \"api-key\": \"API Key\",\n \"api-key-description\": \"API Key to sign a serial assertion request (min. 10 characters). Will be generated if blank or invalid\",\n \"architecture\": \"Architecture\",\n \"architecture-description\": \"The architecture of the device\",\n \"assertion\": \"Assertion\",\n \"assertion-settings\": \"Configure the model assertion headers\",\n \"assertion-status\": \"Assertion Status\",\n \"authority-id-description\": \"The authority for signing models\",\n \"authority-id\": \"Signing Authority\",\n \"base\": \"Base\",\n \"base-description\": \"The name of the base snap\",\n \"brand\": \"Brand\",\n \"brand-description\": \"The name of the device brand\",\n \"cancel\": \"Cancel\",\n \"classic\": \"Classic\",\n \"classic-description\": \"(optional) Ubuntu Classic system: true or false\",\n \"close\": \"Close\",\n \"complete\": \"Complete\",\n \"confirm-log-delete\": \"Remove this log?\",\n \"confirm-model-delete\": \"Remove this model?\",\n \"confirm-store-delete\": \"Remove this sub-store model?\",\n \"confirm-user-delete\": \"Remove this user?\",\n \"copy-api-key\": \"Copy API key to clipboard\",\n \"create-assertion\": \"Error creating the assertion\",\n \"create-system-user\": \"Create System-User\",\n \"date\": \"Date\",\n \"deactivate\": \"Deactivate\",\n \"delete-log\": \"Delete log\",\n \"delete-model\": \"Delete model\",\n \"delete-user\": \"Delete user\",\n \"description\": \"The Serial Vault is a web service that generates cryptographically-signed serial assertions.\",\n \"display_name\": \"Display Name\",\n \"display_name-description\": \"Descriptive name of the device\",\n \"download\": \"Download\",\n \"edit-model\": \"Edit Model\",\n \"edit-user\": \"Edit User\",\n \"email\": \"Email\",\n \"email-description\": \"Email for the Store\",\n \"error-adding-key\": \"Error adding a public key\",\n \"error-auth\": \"Unauthorized action\",\n \"error-created-model\": \"Cannot find the created model\",\n \"error-creating-model\": \"Error creating the model\",\n \"error-creating-store\": \"Error creating the sub-store model\",\n \"error-creating-user\": \"Error creating the user\",\n \"error-decode-json\": \"Error decoding JSON\",\n \"error-decode-key\": \"Error decoding the base64 Signing Key\",\n \"error-deleting-key\": \"Error deleting a public key\",\n \"error-fetch-models\": \"Error fetching the models\",\n \"error-fetch-users\": \"Error fetching the users\",\n \"error-format-assertions\": \"Error formatting the assertions\",\n \"error-get-model\": \"Cannot find the model\",\n \"error-get-non-user-accounts\": \"Cannot get user not related accounts\",\n \"error-get-user\": \"Cannot find the user\",\n \"error-invalid-model\": \"Invalid model ID\",\n \"error-invalid-user\": \"Invalid user ID\",\n \"error-key-data\": \"No data supplied for the public key\",\n \"error-key-exists\": 'The ssh public key already exists',\n \"error-key-not-found\": \"The ssh public key cannot be found\",\n \"error-model-data\": \"No model data supplied\",\n \"error-model-exists\": \"A device with the same Brand and Model already exists\",\n \"error-model-json\": \"Error with fields\",\n \"error-model-not-active\": \"The model is linked with an inactive signing-key\",\n \"error-model-not-found\": \"Cannot find model with the matching brand and model\",\n \"error-nil-data\": \"Uninitialized POST data\",\n \"error-no-permissions\": \"You do not have permissions to access this page\",\n \"error-read-private-key\": \"Error reading the private key\",\n \"error-sign-empty\": \"No data supplied for signing\",\n \"error-signing-assertions\": \"Error signing the assertions\",\n \"error-updating-model\": \"Error updating the model\",\n \"error-updating-store\": \"Error updating sub-store model\",\n \"error-updating-user\": \"Error updating the user\",\n \"error-user-data\": \"No user data supplied\",\n \"error-validate-key\": \"The public key must be entered\",\n \"error-validate-model\": \"The Brand and Model must be supplied\",\n \"error-validate-new-model\": \"The Brand, Model and Signing-Keys must be supplied\",\n \"error-validate-signingkey\": \"The Serial Assertion Key must be selected\",\n \"error-validate-userkey\": \"The System-User Assertion Key must be selected\",\n \"find-serialnumber\": \"find serial number\",\n \"fingerprint\": \"Fingerprint\",\n \"gadget\": \"Gadget Snap\",\n \"gadget-description\": \"The name of the gadget snap\",\n \"generate\": \"Generate\",\n \"generate-signing-key\": \"Generate Signing Key\",\n \"home\": \"Home\",\n \"inactive\": \"Inactive\",\n \"invalid-keypair\": \"The signing-key is invalid\",\n \"kernel\": \"Kernel Snap\",\n \"kernel-description\": \"The name of the kernel snap\",\n \"key-id\": \"Key ID\",\n \"key-name-description\": \"Unique name for the key in the store\",\n \"key-name\": \"Key Name\",\n \"key-name-missing\": \"The key name must be entered\",\n \"login\": \"Login\",\n \"logout\": \"Logout\",\n \"makes\": \"Brands\",\n \"model-description\": \"The name of the device model\",\n \"model\": \"Model\",\n \"modelname\": \"Model Name\",\n \"modelname-description\": \"The name of the pivoted model\",\n \"models_available\": \"The following models are available\",\n \"models\": \"Models\",\n \"more\": \"More\",\n \"name\": \"Full name\",\n \"new-account-assertion\": \"Add or Replace Account Assertion\",\n \"new-account-key-assertion\": \"Add or Replace Account Key Assertion\",\n \"new-model\": \"New Model\",\n \"new-public-key-description\": \"Paste the public key of the machine that needs access to the Serial Vault\",\n \"new-public-key\": \"New Public Key\",\n \"new-signing-key-description\": \"Paste the signing-key or upload the file\",\n \"new-signing-key\": \"Import Signing Key\",\n \"new-substore-device\": \"Create a new sub-store mapping for a device\",\n \"new-user\": \"New User\",\n \"no\": \"No\",\n \"no-assertion-key\": \"No account key assertion found\",\n \"no-assertion\": \"No account assertion found\",\n \"no-assertions\": \"No assertions found\",\n \"no-signing-keys-found\": \"No signing keys found\",\n \"not-used-signing\": \"Not used for signing system-user assertions\",\n \"otp\": \"OTP\",\n \"otp-description\": \"One-time password for SSO\",\n \"password\": \"Password\",\n \"password-description\": \"Password for the Store\",\n \"private-key-description\": \"The signing-key that will be used to sign the device identity\",\n \"private-key-model\": \"Model Assertion Key\",\n \"private-key-model-short\": \"Assertion\",\n \"private-key\": \"Serial Assertion Key\",\n \"private-key-short\": \"Serial Key\",\n \"private-key-user-description\": \"The signing-key that will be used to sign the system-user assertion\",\n \"private-key-user-short\": \"System-User Key\",\n \"private-key-user\": \"System-User Assertion Key\",\n \"public-key-confirm\": \"Confirm deletion of the public key\",\n \"public-key-description\": \"Add a new public key\",\n \"public-key\": \"Public Key\",\n \"public-keys-authorized\": \"The following keys are authorized\",\n \"public-keys\": \"Public Keys\",\n \"register-signing-key\": \"Register Signing Key with the Store\",\n \"remove\": \"Remove\",\n \"required-snaps\": \"Required Snaps\",\n \"required-snaps-description\": \"(optional) List of required snaps - enter a comma-separated list\",\n \"reseller\": \"Reseller\",\n \"reseller-features\": \"Enable Reseller Features\",\n \"revision\": \"Revision\",\n \"revision-description\": \"Revision of the assertion\",\n \"role\": \"Role\",\n \"save\": \"Save\",\n \"select-accounts\": \"Select below the accounts this user belongs to:\",\n \"serial-number-description\": \"Serial Number of the device\",\n \"serial-number\": \"Serial Number\",\n \"series\": \"Series\",\n \"series-description\": \"Snap namespace series\",\n \"signing-key\": \"Signing Key\",\n \"signing-keys\": \"Signing Keys\",\n \"signinglog-description\": \"Log of the serial numbers and device-key fingerprints that have been used\",\n \"signinglog\": \"Signing Log\",\n \"store\": \"Store\",\n \"store-description\": \"ID of the brand store\",\n \"store-account-assertion\": \"Account Assertion from Store\",\n \"store-credentials\": \"Store Credentials\",\n \"store-keypair\": \"Error storing the signing key\",\n \"substore\": \"Sub-Store\",\n \"substore-description\": \"Store ID of the Sub-Store\",\n \"substore-model\": \"Sub-Store Model\",\n \"substores\": \"Sub-Store Models\",\n \"systemuser\": \"System-User\",\n \"title\": \"Serial Vault\",\n \"upload-account-assertion\": \"Upload Account Assertion\",\n \"user-accounts\": \"User Accounts\",\n \"user-email\": \"The email address of the user\",\n \"user-key\": \"User Key\",\n \"user-name\": \"The full name of the user\",\n \"username\": \"Username\",\n \"user-not-found\": \"You do not have permissions to access this site\",\n \"users_available\": \"The following users are available\",\n \"users\": \"Users\",\n \"user\": \"User\",\n \"user-username\": \"The nickname of the user\",\n \"version\": \"Version\",\n \"yes\": \"Yes\",\n }\n};\n\nexport default intlData;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport request from 'then-request';\n\nvar API_VERSION = '/v1/';\n\nvar Ajax = {\n\n\tgetToken: function() {\n\t\treturn this.get('token')\n\t},\n\n\tgetAuthToken: function() {\n\t\treturn this.get('authtoken')\n\t},\n\n\tget: function(url, qs) {\n\t\t\tif (!qs) {\n\t\t\t\tqs = {};\n\t\t\t}\n\t\t\treturn request('GET', API_VERSION + url, {\n\t\t\t\theaders: {},\n\t\t\t\tqs: qs\n\t\t\t});\n\t},\n\n\tpost: function(url, data) {\n\t\t// Get updated CSRF token before POST\n\t\treturn this.getToken().then(function(response) {\n\t\t\treturn request('POST', API_VERSION + url, {\n\t\t\t\theaders: {\n\t\t\t\t\t'X-CSRF-Token': response.headers['x-csrf-token'],\n\t\t\t\t},\n\t\t\t\tjson: data\n\t\t\t});\n\t\t});\n\t},\n\n\tput: function(url, data) {\n\t\t// Get updated CSRF token before PUT\n\t\treturn this.getToken().then(function(response) {\n\t\t\treturn request('PUT', API_VERSION + url, {\n\t\t\t\theaders: {\n\t\t\t\t\t'X-CSRF-Token': response.headers['x-csrf-token'],\n\t\t\t\t},\n\t\t\t\tjson: data\n\t\t\t});\n\t\t});\n\t},\n\n\tdelete: function(url, data) {\n\t\t// Get updated CSRF token before DELETE\n\t\treturn this.getToken().then(function(response) {\n\t\t\treturn request('DELETE', API_VERSION + url, {\n\t\t\t\theaders: {\n\t\t\t\t\t'X-CSRF-Token': response.headers['x-csrf-token'],\n\t\t\t\t},\n\t\t\t\tjson: data\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport default Ajax;\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nexport const Role = {\n Standard: 100,\n SyncUser: 150,\n Admin: 200,\n Superuser: 300,\n}","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Messages from './messages'\nimport jwtDecode from 'jwt-decode'\nimport Ajax from '../models/Ajax'\nimport {Role} from './Constants'\n\n\nconst sections = ['signing-keys', 'models', 'keypairs', 'accounts', 'signinglog', 'substores', 'systemuser', 'users', 'notfound']\n\n\nexport function sectionFromPath(path) {\n return path === '/' ? 'home' : (\n sections.find(section => (\n path.startsWith(`/${section}`)\n )) || ''\n )\n}\n\nexport function sectionIdFromPath(path, section) {\n const parts = path.split('/').slice(1)\n return (parts[0] === section && parts[1]) || ''\n}\n\nexport function subSectionIdFromPath(path, section) {\n const parts = path.split('/').slice(1)\n return (parts[0] === section && parts[2]) || ''\n}\n\nexport function T(message) {\n const lang = window.AppState.getLocale()\n const msg = Messages[lang][message] || message;\n return msg\n}\n\nexport function parseResponse(response) {\n // Check the content-type is JSON\n if (!response.headers['content-type'].includes('json')) {\n // Non-json body\n return {\n error_code: response.statusCode,\n message: response.body\n }\n }\n\n // Parse the body as JSON\n return JSON.parse(response.body);\n}\n\nexport function formatError (data) {\n var message = T(data.error_code);\n if (data.error_subcode) {\n message += ': ' + T(data.error_subcode);\n } else if (data.message) {\n message += ': ' + data.message;\n }\n return message;\n}\n\nexport function getAuthToken(callback) {\n\n // Get a fresh token and return it to the callback\n // The token will be passed to the views\n Ajax.getAuthToken().then((resp) => {\n\n // If user authentication is off, set up a default token\n var data = JSON.parse(resp.body)\n if (!data.enableUserAuth) {\n callback({role: Role.Admin})\n return\n }\n\n var jwt = resp.headers.authorization\n\n if (!jwt) {\n callback({})\n return\n }\n var token = jwtDecode(jwt)\n\n if (!token) {\n callback({})\n return\n }\n callback(token)\n })\n\n}\n\nexport function authToken() {\n if (localStorage.getItem('token')) {\n var t = JSON.parse(localStorage.getItem('token'))\n return t\n } else {\n return {}\n }\n}\n\nexport function isLoggedIn(token) {\n return isUserStandard(token)\n}\n\nexport function isUserStandard(token) {\n return isUser(Role.Standard, token)\n}\n\nexport function isUserAdmin(token) {\n return isUser(Role.Admin, token)\n}\n\nexport function isUserSuperuser(token) {\n return isUser(Role.Superuser, token)\n}\n\nexport function roleAsString(role) {\n var str\n switch (role) {\n case Role.Standard:\n str = \"Standard\"\t\n break;\n case Role.SyncUser:\n str = \"Sync API\"\n break;\n case Role.Admin:\n str = \"Admin\"\n break;\n case Role.Superuser:\n str = \"Superuser\"\n break\n default:\n str= \"invalid role\"\n break;\n }\n return str\n}\n\nfunction isUser(role, token) {\n if (!token) return false\n if (!token.role) return false\n\n return (token.role >= role)\n}\n\nexport function saveAccount(account) {\n sessionStorage.setItem('accountId', account.ID);\n sessionStorage.setItem('accountCode', account.AuthorityID);\n sessionStorage.setItem('accountAssertion', account.Assertion);\n sessionStorage.setItem('accountReseller', account.ResellerAPI);\n}\n\nexport function getAccount() {\n return {\n ID: parseInt(sessionStorage.getItem('accountId'),10),\n AuthorityID: sessionStorage.getItem('accountCode'),\n Assertion: sessionStorage.getItem('accountAssertion'),\n ResellerAPI: sessionStorage.getItem('accountReseller')==='true',\n }\n}\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport {T, isLoggedIn} from './Utils'\nimport {Role} from './Constants'\n\nconst linksSuperuser = ['accounts', 'signing-keys', 'models', 'signinglog', \"users\"];\nconst linksAdmin = ['signing-keys', 'models', 'signinglog'];\nconst linksStandard = ['systemuser'];\n\n\nclass Navigation extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n accountMenu: false\n }\n }\n\n handleAccountChange = (e) => {\n e.preventDefault()\n\n // Get the account\n var accountId = parseInt(e.target.getAttribute('data-key'), 10)\n var account = this.props.accounts.filter(a => {\n return a.ID === accountId\n })[0]\n\n this.handleAccountMenu()\n this.props.onAccountChange(account)\n }\n\n handleAccountMenu = (e) => {\n if (e) {\n e.preventDefault()\n }\n this.setState({accountMenu: !this.state.accountMenu})\n }\n\n renderAccounts(token) {\n if (!isLoggedIn(token)) {\n return \n }\n\n if (this.props.accounts.length === 0) {\n return \n }\n\n var name = this.props.selectedAccount.AuthorityID\n if (name.length > 20) {\n name = name.slice(0, 20) + '...'\n }\n\n return (\n
  • \n \n {name} \n \n {this.state.accountMenu ?\n \n \n {this.props.accounts.map(a => {\n return (\n {a.AuthorityID}\n )\n })}\n \n \n : ''\n }\n \n
  • \n )\n\n }\n\n render() {\n\n var token = this.props.token\n var links;\n\n switch(token.role) {\n case Role.Admin:\n links = linksAdmin;\n break;\n case Role.Superuser:\n links = linksSuperuser;\n break;\n case Role.Standard:\n links = linksStandard\n break\n default:\n links = []\n }\n\n return (\n
      \n {this.renderAccounts(token)}\n {links.map((l) => {\n var active = '';\n if (this.props.active === l) {\n active = ' active'\n }\n var link = '/' + l;\n return (\n
    • {T(l)}
    • \n )\n })}\n
    \n );\n }\n}\n\nexport default Navigation;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport {T, isLoggedIn} from './Utils'\n\n\nclass NavigationUser extends Component {\n renderUser(token) {\n if (isLoggedIn(token)) {\n // The name is undefined if user authentication is off\n if (token.name) {\n return (\n
  • {token.name}
  • \n )\n }\n } else {\n return (\n
  • {T('login')}
  • \n )\n }\n }\n\n renderUserLogout(token) {\n if (isLoggedIn(token)) {\n // The name is undefined if user authentication is off\n if (token.name) {\n return (\n
  • {T('logout')}
  • \n )\n }\n }\n }\n\n render() {\n var token = this.props.token\n\n return (\n
      \n {this.renderUser(token)}\n {this.renderUserLogout(token)}\n
    \n );\n }\n}\n\nexport default NavigationUser;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react';\nimport Navigation from './Navigation'\nimport NavigationUser from './NavigationUser'\nimport {T} from './Utils';\n\nconst LANGUAGES = {\n en: 'English',\n zh: 'Chinese'\n}\n\nclass Header extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n language: window.AppState.getLocale()\n }\n }\n\n handleLanguageChange = (e) => {\n e.preventDefault();\n this.setState({language: e.target.value});\n window.AppState.setLocale(e.target.value);\n window.AppState.rerender();\n }\n\n renderLanguage(lang) {\n if (this.state.language === lang) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n }\n\n handleToggleMenu = (e) => {\n e.preventDefault();\n\n var navPrimary = document.querySelector('.p-navigation__nav');\n navPrimary.classList.toggle('show');\n }\n\n render() {\n\n return (\n
    \n
    \n
    \n \n {T(\"title\")}\n \n
    \n \n \"menu\"\n \n \n
    \n\n
    \n )\n }\n}\n\nexport default Header;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax';\n\nvar Vault = {\n\n\tversion: function () {\n\t\t\treturn Ajax.get('version');\n\t}\n}\n\nexport default Vault;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react';\nimport Vault from '../models/vault';\nimport {T} from './Utils';\n\n\nclass Footer extends Component {\n\n constructor(props) {\n super(props)\n this.state = {version: null};\n }\n\n componentDidMount() {\n this.getVersion();\n }\n\n getVersion() {\n var self = this;\n Vault.version().then(function(response) {\n var data = JSON.parse(response.body);\n self.setState({version: data.version});\n });\n }\n\n render() {\n return (\n
    \n
    \n

    {T('version')}: {this.state.version}

    \n
    \n
    \n );\n }\n}\n\nexport default Footer;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\n\n\nclass AlertBox extends Component {\n render() {\n if (this.props.message) {\n return (\n
    \n

    {this.props.message}

    \n
    \n );\n } else {\n return ;\n }\n }\n}\n\nexport default AlertBox;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, { Component } from 'react';\nimport {FormattedMessage} from 'react-intl'\nimport {T, isLoggedIn} from './Utils'\nimport AlertBox from './AlertBox'\n\n\nclass Index extends Component {\n\n constructor(props) {\n\n super(props)\n this.state = {\n token: props.token || {},\n }\n }\n\n renderUser() {\n if (isLoggedIn(this.props.token)) {\n return
    \n } else {\n return (\n \n )\n }\n }\n\n renderError() {\n if (this.props.error) {\n return (\n \n )\n }\n }\n\n render() {\n return (\n
    \n\n\n
    \n

    \n {this.renderError()}\n
    \n
    \n \n
    \n
    \n
    \n\n
    \n {this.renderUser()}\n
    \n
    \n );\n }\n}\n\nexport default Index;","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport {T} from './Utils';\n\nclass DialogBox extends Component {\n\n render() {\n var classYes = 'p-button--brand'\n var classNo = 'p-button--neutral'\n if (this.props.small) {\n classYes = 'p-button--brand small'\n classNo = 'p-button--neutral small'\n }\n\n if (this.props.message) {\n return (\n
    \n

    {this.props.message}

    \n
    \n \n \n
    \n
    \n );\n } else {\n return ;\n }\n }\n}\n\nexport default DialogBox;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport DialogBox from './DialogBox';\nimport {T} from './Utils'\n\nclass ModelRow extends Component {\n\n copyToClipboard = (e) => {\n e.preventDefault()\n const el = document.createElement('textarea');\n el.value = e.target.getAttribute('data-key');\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n\n renderActions() {\n if (this.props.model.id !== this.props.confirmDelete) {\n return (\n
    \n \n  \n \n
    \n );\n } else {\n return (\n \n );\n }\n }\n\n render() {\n var fingerprint = this.props.model['key-id'];\n var fingerprintUser = this.props.model['key-id-user'];\n var fingerprintModel;\n if (this.props.model['keypair-id-model'] > 0) {\n fingerprintModel = this.props.model['key-id-model'];\n } else {\n fingerprintModel = \"\"\n }\n return (\n \n \n {this.renderActions()}\n \n \n \n  \n {this.props.model.model}\n \n {fingerprint}\n {fingerprintUser}\n {this.props.model['key-active'] && this.props.model['key-active-user'] ? : }\n \n \n \n \n )\n }\n}\n\nexport default ModelRow;\n","/*\n * Copyright (C) 2016-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax';\n\nvar Keypair = {\n\turl: 'keypairs',\n\n\tlist: function () {\n\t\t\treturn Ajax.get(this.url);\n\t},\n\n\tget: function(keypairId) {\n\t\treturn Ajax.get(this.url + '/' + keypairId, {});\n\t},\n\n\tupdate: function(keypair) {\n\t\treturn Ajax.put(this.url + '/' + keypair.ID, keypair);\n\t},\n\n\tenable: function(keypairId) {\n\t\treturn Ajax.post(this.url + '/' + keypairId + '/enable', {});\n\t},\n\n\tdisable: function(keypairId) {\n\t\treturn Ajax.post(this.url + '/' + keypairId + '/disable', {});\n\t},\n\n\tcreate: function(authorityId, key, keyName) {\n\t\treturn Ajax.post(this.url, {'authority-id': authorityId, 'private-key': key, 'key-name': keyName});\n\t},\n\n\tgenerate: function(authorityId, keyName) {\n\t\treturn Ajax.post(this.url + '/generate', {'authority-id': authorityId, 'key-name': keyName});\n\t},\n\n\tstatus: function() {\n\t\treturn Ajax.get(this.url + '/status');\n\t},\n\n\tassertion: function(keyId, assertion) {\n\t\treturn Ajax.post(this.url + '/assertion', {id: keyId, assertion: assertion});\n\t},\n\n\tregister: function(keypair) {\n\t\treturn Ajax.post(this.url + '/register', keypair);\n\t}\n}\n\nexport default Keypair;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax';\n\nvar Models = {\n\turl: 'models',\n\n\tlist: function () {\n\t\treturn Ajax.get(this.url);\n\t},\n\n\tget: function(modelId) {\n\t\treturn Ajax.get(this.url + '/' + modelId);\n\t},\n\n\tupdate: function(model) {\n\t\treturn Ajax.put(this.url + '/' + model.id, model);\n\t},\n\n\tdelete: function(model) {\n\t\treturn Ajax.delete(this.url + '/' + model.id, {});\n\t},\n\n\tcreate: function(model) {\n\t\treturn Ajax.post(this.url, model);\n\t},\n\n\tassertion: function(modelAssertion) {\n\t\treturn Ajax.post(this.url + '/assertion', modelAssertion);\n\t},\n\n}\n\nexport default Models;\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport AlertBox from './AlertBox';\nimport Keypairs from '../models/keypairs';\nimport Models from '../models/models';\nimport {T, formatError, isUserAdmin} from './Utils';\n\nclass ModelAssertion extends Component {\n\n constructor(props) {\n\n super(props)\n\n var assertion = {}\n if ((this.props.model) && (this.props.model.assertion)) {\n assertion = this.props.model.assertion\n }\n if (!assertion.model_id) {\n assertion.model_id = this.props.model.id\n }\n\n this.state = {\n error: null,\n keypairs: [],\n assertion: assertion,\n }\n\n this.getKeypairs();\n }\n\n getKeypairs() {\n Keypairs.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n\n var keypairs = data.keypairs.filter( (k) => {\n return k.AuthorityID === this.props.model['brand-id']\n })\n\n this.setState({keypairs: keypairs, message: message});\n });\n }\n\n handleChangePrivateKeyModel = (e) => {\n var assertion = this.state.assertion;\n assertion['keypair_id'] = parseInt(e.target.value, 10);\n this.setState({assertion: assertion});\n }\n\n handleChangeSeries = (e) => {\n var assertion = this.state.assertion;\n assertion['series'] = parseInt(e.target.value, 10);\n this.setState({assertion: assertion});\n }\n\n handleChangeArchitecture = (e) => {\n var assertion = this.state.assertion;\n assertion['architecture'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleChangeRevision = (e) => {\n var assertion = this.state.assertion;\n assertion['revision'] = parseInt(e.target.value, 10);\n this.setState({assertion: assertion});\n }\n\n handleChangeBase = (e) => {\n var assertion = this.state.assertion;\n assertion['base'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleChangeClassic = (e) => {\n var assertion = this.state.assertion;\n assertion['classic'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleBlurClassic = (e) => {\n var assertion = this.state.assertion;\n switch (e.target.value.toLowerCase()) {\n case '':\n assertion['classic'] = ''\n break\n case 'false':\n assertion['classic'] = 'false'\n break\n case 'no':\n assertion['classic'] = 'false'\n break\n default:\n assertion['classic'] = 'true'\n }\n this.setState({assertion: assertion});\n }\n\n handleChangeDisplayName = (e) => {\n var assertion = this.state.assertion;\n assertion['display_name'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleChangeGadget = (e) => {\n var assertion = this.state.assertion;\n assertion['gadget'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleChangeKernel = (e) => {\n var assertion = this.state.assertion;\n assertion['kernel'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleChangeStore = (e) => {\n var assertion = this.state.assertion;\n assertion['store'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleChangeSnaps = (e) => {\n var assertion = this.state.assertion;\n assertion['required_snaps'] = e.target.value;\n this.setState({assertion: assertion});\n }\n\n handleSave = (e) => {\n e.preventDefault()\n if (!isUserAdmin(this.props.token)) {\n window.location = '/models';\n }\n\n Models.assertion(this.state.assertion).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: formatError(data)});\n } else {\n window.location = '/models';\n }\n })\n }\n\n render() {\n\n var ma = this.state.assertion\n\n return (\n \n \n
    {T('assertion-settings')}
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n \n
    \n \n
    \n \n );\n }\n}\n\nexport default KeypairAdd;\n","/*\n * Copyright (C) 2018 Canonical Ltd\n * License granted by Canonical Limited\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react'\nimport Keypairs from '../models/keypairs'\nimport AlertBox from './AlertBox'\nimport {T, isUserAdmin} from './Utils';\n\nclass KeypairEdit extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n keypair: {},\n error: null,\n };\n\n this.getKeypair(this.props.id)\n }\n\n getKeypair(keyId) {\n Keypairs.get(keyId).then((response) => {\n var data = JSON.parse(response.body);\n\n if (response.statusCode >= 300) {\n this.setState({error: this.formatError(data), hideForm: true});\n } else {\n this.setState({keypair: data.keypair, hideForm: false});\n }\n });\n }\n\n handleChangeKeyName = (e) => {\n var k = this.state.keypair\n k.KeyName = e.target.value\n this.setState({keypair: k});\n }\n\n handleSaveClick = (e) => {\n e.preventDefault();\n\n Keypairs.update(this.state.keypair).then((response) => {\n var data = JSON.parse(response.body);\n if ((response.statusCode >= 300) || (!data.success)) {\n this.setState({error: this.formatError(data)});\n } else {\n window.location = '/signing-keys';\n }\n });\n }\n\n formatError = (data) => {\n var message = T(data.error_code);\n if (data.error_subcode) {\n message += ': ' + T(data.error_subcode);\n } else if (data.message) {\n message += ': ' + data.message;\n }\n return message;\n }\n\n render() {\n\n if (!isUserAdmin(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n if (this.state.hideForm) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n
    \n

    {T('edit-signing-key')}

    \n\n \n
    \n
    \n \n\n \n
    \n
    \n \n
    \n
    \n )\n\n }\n\n}\n\nexport default KeypairEdit;\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react'\nimport Keypairs from '../models/keypairs'\nimport AlertBox from './AlertBox'\nimport {T, isUserAdmin} from './Utils';\n\nclass KeypairGenerate extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n keyName: null, \n error: this.props.error,\n };\n }\n\n getAccounts() {\n if (this.props.selectedAccount.ID) {\n return [this.props.selectedAccount]\n } else {\n return []\n }\n }\n\n handleChangeAuthorityId = (e) => {\n this.setState({authorityId: e.target.value});\n }\n\n handleChangeKeyName = (e) => {\n this.setState({keyName: e.target.value});\n }\n\n handleSaveClick = (e) => {\n var self = this;\n e.preventDefault();\n\n Keypairs.generate(this.props.selectedAccount.AuthorityID, this.state.keyName).then(function(response) {\n var data = JSON.parse(response.body);\n if ((response.statusCode >= 300) || (!data.success)) {\n self.setState({error: self.formatError(data)});\n } else {\n window.location = '/signing-keys';\n }\n });\n }\n\n formatError = (data) => {\n var message = T(data.error_code);\n if (data.error_subcode) {\n message += ': ' + T(data.error_subcode);\n } else if (data.message) {\n message += ': ' + data.message;\n }\n return message;\n }\n\n render() {\n\n if (!isUserAdmin(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n
    \n

    {T('generate-signing-key')}

    \n
    \n \n\n
    \n
    \n \n \n\n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default KeypairGenerate;\n","/*\n * Copyright (C) 2016-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react';\nimport Keypairs from '../models/keypairs';\nimport AlertBox from './AlertBox';\nimport {T, formatError, isUserAdmin} from './Utils'\n\n\nclass KeypairStore extends Component {\n constructor(props) {\n super(props)\n\n var k = {}\n if (this.props.keypairs.length > 0) {\n k = this.keyFromKeypair(this.props.keypairs[0]);\n }\n\n this.state = {\n keypair: k\n }\n }\n\n keyFromKeypair (keypair) {\n return {'authority-id': keypair.AuthorityID, 'key-name': keypair.KeyName}\n }\n\n handleChangeKey = (e) => {\n var id = parseInt(e.target.value, 10);\n var keys = this.props.keypairs.filter((k) => {\n return k.ID === id\n })\n if (keys.length > 0) {\n var k = this.keyFromKeypair(keys[0])\n this.setState({keypair: k})\n }\n }\n\n handleChangeName = (e) => {\n var keypair = this.state.keypair\n keypair.KeyName = e.target.value\n this.setState({keypair: keypair})\n }\n\n handleChangeEmail = (e) => {\n var keypair = this.state.keypair\n keypair.email = e.target.value\n this.setState({keypair: keypair})\n }\n\n handleChangePassword = (e) => {\n var keypair = this.state.keypair\n keypair.password = e.target.value\n this.setState({keypair: keypair})\n }\n\n handleChangeOTP = (e) => {\n var keypair = this.state.keypair\n keypair.otp = e.target.value\n this.setState({keypair: keypair})\n }\n\n handleSaveClick = (e) => {\n e.preventDefault()\n\n Keypairs.register(this.state.keypair).then((response) => {\n var data = JSON.parse(response.body);\n if ((response.statusCode >= 300) || (!data.success)) {\n this.setState({error: formatError(data)});\n } else {\n window.location = '/signing-keys';\n }\n });\n }\n\n render() {\n if (!isUserAdmin(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n
    \n

    {T('register-signing-key')}

    \n
    \n \n\n
    \n
    \n\n \n\n \n\n

    {T('store-credentials')}

    \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n\n }\n}\n\nexport default KeypairStore;\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport Models from '../models/models'\nimport AlertBox from './AlertBox'\nimport {T, isUserSuperuser} from './Utils'\n\nclass AccountList extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n //keypairs: props.keypairs || [],\n models: props.models || [],\n message: '',\n }\n }\n\n componentDidMount() {\n this.getModels()\n }\n\n getAccounts() {\n if (this.props.selectedAccount.ID) {\n return [this.props.selectedAccount]\n } else {\n return []\n }\n }\n\n getModels() {\n Models.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n this.setState({models: data.models, message: message});\n });\n }\n\n // Indicates whether the key has everything uploaded for it\n renderKeyStatus(acc) {\n // Check if the key is used for signing system-users on any models\n if (!this.state.models.find(m => (m['authority-id-user'] === acc.AuthorityID) & (m['key-id-user'] === acc.KeyID))) {\n return

    {T('not-used-signing')}

    \n }\n\n // Check that we have an account assertion\n var messages = []\n if (!this.getAccounts().find(a => a.AuthorityID === acc.AuthorityID)) {\n messages.push(T('no-assertion'))\n }\n\n // Check if we have an account key assertion\n if ((!acc.Assertion) || (acc.Assertion.length === 0)) {\n messages.push(T('no-assertion-key'))\n }\n \n if (messages.length === 0) {\n return (\n
    \n

    {T('complete')}

    \n
    \n )\n }\n\n return (\n
    \n {messages.map((m, index, array) => {\n return (\n

    {m}

    \n )\n })}\n
    \n )\n }\n\n renderAccounts() {\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n if (this.getAccounts().length > 0) {\n return (\n \n \n \n {isUserSuperuser(this.props.token) ? : ''}\n \n \n \n \n {this.getAccounts().map((acc) => {\n return (\n \n {isUserSuperuser(this.props.token) ? \n \n : ''\n }\n \n \n \n \n );\n })}\n \n
    {T('account')}{T('assertion-status')}{T('reseller')}
    \n
    \n \n
    \n
    {acc.AuthorityID}\n

    {T('complete')}

    \n
    {acc.ResellerAPI ? : }
    \n );\n } else {\n return (\n

    {T('no-assertions')}

    \n );\n }\n }\n\n renderAccountKeys() {\n if (this.props.keypairs.length > 0) {\n return (\n \n \n \n \n \n \n \n {this.props.keypairs.map((acc) => {\n return (\n \n \n \n \n \n );\n })}\n \n
    {T('key-id')}{T('assertion-status')}{T('reseller')}
    \n {acc.AuthorityID}
    {acc.KeyID}\n
    \n {this.renderKeyStatus(acc)}\n {acc.ResellerAPI ? : }
    \n );\n } else {\n return (\n

    {T('no-assertions')}

    \n );\n }\n }\n\n render() {\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n
    \n\n
    \n

    {T('accounts')}

    \n  \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n\n
    \n {this.renderAccounts()}\n
    \n
    \n\n
    \n
    \n

    {T('account-keys')}

    \n  \n
    \n \n \n \n
    \n
    \n\n
    \n {this.renderAccountKeys()}\n
    \n
    \n
    \n )\n }\n\n}\n\nexport default AccountList\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax'\n\nvar Account = {\n url: 'accounts',\n\n list() {\n return Ajax.get(this.url);\n },\n\n get(id) {\n return Ajax.get(this.url + '/' + id);\n },\n\n create(account) {\n return Ajax.post(this.url, account);\n },\n\n update(account) {\n return Ajax.put(this.url + '/' + account.ID, account);\n },\n\n upload(assertion) {\n return Ajax.post(this.url + '/upload', {assertion: assertion});\n },\n\n stores(id) {\n return Ajax.get(this.url + '/' + id + '/stores');\n },\n\n storeNew(accountID, store) {\n store.accountID = parseInt(accountID, 10)\n return Ajax.post(this.url + '/stores', store);\n },\n\n storeUpdate(store) {\n return Ajax.put(this.url + '/stores/' + store.id, store);\n },\n\n storeDelete(store) {\n return Ajax.delete(this.url + '/stores/' + store.id, {});\n }\n}\n\nexport default Account\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport AlertBox from './AlertBox'\nimport Accounts from '../models/accounts'\nimport {T, parseResponse, formatError, isUserSuperuser} from './Utils';\n\nclass AccountForm extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n assertion: null,\n error: null,\n }\n }\n\n handleFileUpload = (e) => {\n var reader = new FileReader();\n var file = e.target.files[0];\n\n reader.onload = (upload) => {\n this.setState({\n assertion: upload.target.result.split(',')[1],\n });\n }\n\n reader.readAsDataURL(file);\n }\n\n handleSaveClick = (e) => {\n e.preventDefault();\n\n Accounts.upload(this.state.assertion).then((response) => {\n var data = parseResponse(response)\n if (!data.success) {\n this.setState({error: formatError(data)});\n } else {\n window.location = '/accounts';\n }\n });\n }\n\n render() {\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n\n
    \n

    {T('new-account-assertion')}

    \n
    \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n\n}\n\nexport default AccountForm","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport AlertBox from './AlertBox'\nimport Accounts from '../models/accounts'\nimport {T, parseResponse, formatError, isUserSuperuser} from './Utils';\n\nclass AccountEdit extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n account: {},\n error: null,\n }\n\n if (this.props.id) {\n this.getAccount(this.props.id)\n }\n }\n\n getAccount(accountId) {\n Accounts.get(accountId).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: this.formatError(data), hideForm: true});\n } else {\n this.setState({account: data.account, hideForm: false});\n }\n });\n }\n\n handleChangeAccount = (e) => {\n var a = this.state.account\n a.AuthorityID = e.target.value\n this.setState({account: a})\n }\n\n handleChangeReseller = (e) => {\n var a = this.state.account;\n a.ResellerAPI = e.target.checked;\n this.setState({account: a});\n }\n\n handleSaveClick = (e) => {\n e.preventDefault();\n\n if (this.state.account.ID) {\n Accounts.update(this.state.account).then((response) => {\n var data = parseResponse(response)\n if (!data.success) {\n this.setState({error: formatError(data)});\n } else {\n window.location = '/accounts';\n }\n });\n } else {\n Accounts.create(this.state.account).then((response) => {\n var data = parseResponse(response)\n if (!data.success) {\n this.setState({error: formatError(data)});\n } else {\n window.location = '/accounts';\n }\n });\n }\n }\n\n render() {\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n\n
    \n

    {T('store-account-assertion')}

    \n
    \n \n\n
    \n
    \n \n \n
    \n
    \n \n {this.props.id? \n \n : ''\n }\n
    \n
    \n
    \n
    \n );\n }\n\n}\n\nexport default AccountEdit","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport AlertBox from './AlertBox'\nimport Keypairs from '../models/keypairs'\nimport {T, parseResponse, formatError, isUserSuperuser} from './Utils';\n\nclass AccountKeyForm extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n keypairs: props.keypairs || [],\n keypairId: 0,\n assertion: null,\n error: null\n }\n\n this.getKeypairs()\n }\n\n getKeypairs() {\n Keypairs.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n this.setState({keypairs: data.keypairs, message: message});\n });\n }\n\n handleChangeKeypair = (e) => {\n e.preventDefault();\n this.setState({keypairId: parseInt(e.target.value, 10)})\n }\n\n handleFileUpload = (e) => {\n var reader = new FileReader();\n var file = e.target.files[0];\n\n reader.onload = (upload) => {\n this.setState({\n assertion: upload.target.result.split(',')[1],\n });\n }\n\n reader.readAsDataURL(file);\n }\n\n handleSaveClick = (e) => {\n e.preventDefault();\n\n Keypairs.assertion(this.state.keypairId, this.state.assertion).then((response) => {\n var data = parseResponse(response)\n if (!data.success) {\n this.setState({error: formatError(data)});\n } else {\n window.location = '/accounts';\n }\n });\n }\n\n render() {\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n\n
    \n

    {T('new-account-key-assertion')}

    \n
    \n \n\n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n\n}\n\nexport default AccountKeyForm","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react';\nimport Keypairs from '../models/keypairs';\nimport {T} from './Utils'\n\n\nclass KeypairList extends Component {\n\n handleToggle = (e) => {\n if (e.target.getAttribute('aria-checked')==='false') {\n Keypairs.enable(e.target.getAttribute('data-key')).then(this.props.refresh);\n } else {\n Keypairs.disable(e.target.getAttribute('data-key')).then(this.props.refresh);\n }\n\n }\n\n renderRow(keypr) {\n return (\n \n \n \n \n \n \n {keypr.AuthorityID}\n {keypr.KeyID}\n \n \n \n {keypr.KeyName}\n \n );\n }\n\n render() {\n\n if (this.props.keypairs.length > 0) {\n return (\n \n \n \n \n \n \n \n \n {this.props.keypairs.map((keypr) => {\n return this.renderRow(keypr);\n })}\n \n
    {T('authority-id')}{T('key-id')}{T('active')}{T('key-name')}
    \n );\n } else {\n return (\n

    {T('no-signing-keys-found')}

    \n );\n }\n }\n\n}\n\nexport default KeypairList;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react';\nimport Keypairs from '../models/keypairs';\nimport {T} from './Utils'\nimport { setTimeout } from 'timers';\n\n\nclass KeypairStatus extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n keypairs: [],\n }\n\n this.getKeypairs()\n }\n\n poll = () => {\n // Polls every 30s\n setTimeout(this.getKeypairs.bind(this), 30000);\n }\n\n getKeypairs() {\n Keypairs.status().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n this.setState({keypairs: data.status, message: message});\n })\n .done( ()=> {\n this.poll()\n })\n }\n\n renderRow(keypr) {\n return (\n \n {keypr['authority-id']}\n {keypr['key-name']}\n {T(keypr.status)}\n \n );\n }\n\n render() {\n\n if (this.state.keypairs.length > 0) {\n return (\n
    \n \n \n {this.state.keypairs.map((keypr) => {\n return this.renderRow(keypr);\n })}\n \n
    \n
    \n );\n } else {\n return ;\n }\n }\n\n}\n\nexport default KeypairStatus;\n","// -*- Mode: Go; indent-tabs-mode: t -*-\n\n/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport KeypairList from './KeypairList';\nimport KeypairStatus from './KeypairStatus';\nimport AlertBox from './AlertBox';\nimport {T, isUserAdmin} from './Utils'\n\nclass Keypair extends Component {\n\n constructor(props) {\n\n super(props)\n this.state = {\n confirmDelete: null,\n message: null,\n }\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n refresh() {\n this.props.onRefresh(this.props.selectedAccount)\n }\n\n handleRefresh = () => {\n this.refresh()\n }\n\n formatError(data) {\n var message = T(data.error_code);\n if (data.error_subcode) {\n message += ': ' + T(data.error_subcode);\n } else if (data.message) {\n message += ': ' + data.message;\n }\n return message;\n }\n\n render() {\n if (!isUserAdmin(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n\n
    \n
    \n

    {T('signing-keys')}

    \n  \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n
    \n );\n }\n}\n\nexport default Keypair;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport moment from 'moment';\n\n\nclass SigningLogRow extends Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t{this.props.log.make}\n\t\t\t\t{this.props.log.model}\n\t\t\t\t{this.props.log.serialnumber}\n\t\t\t\t{this.props.log.revision}\n\t\t\t\t{this.props.log.fingerprint}\n\t\t\t\t{moment(this.props.log.created).format(\"YYYY-MM-DD HH:mm\")}\n\t\t\t\n\t\t)\n\t}\n}\n\nexport default SigningLogRow;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax';\n\nvar SigningLog = {\n url: 'signinglog',\n\n\tlist: function (fromID) {\n\t\tvar data = {};\n\t\tif (fromID) {\n\t\t\tdata.fromID = fromID;\n\t\t}\n\t\treturn Ajax.get(this.url, data);\n\t},\n\n\tlistForAccount: function (authorityID, offset, filter, serialnumber) {\n\t\treturn Ajax.get(this.url + '/account/' + authorityID , {\n\t\t\toffset: offset,\n\t\t\tfilter: filter,\n\t\t\tserialnumber: serialnumber\n\t\t});\n\t},\n\n\tfilters: function(authorityID) {\n\t\treturn Ajax.get(this.url + '/account/' + authorityID + '/filters');\n\t},\n\n\tdownload: function(authorityID, filter, serialnumber) {\n\t\tAjax.get(this.url + '/account/' + authorityID , {\n\t\t\tall: true,\n\t\t\tfilter: filter,\n\t\t\tserialnumber: serialnumber\n\t\t}).then((response) => {\n\t\t\tvar data = JSON.parse(response.body);\n\t\t\t// Convert the filtered data to a CSV array format\n\t\t\tvar lines = ['data:text/csv;charset=utf-8,ID,Make,Model,Serial Number,Revision,Fingerprint,Date'];\n\n\t\t\tdata.logs.forEach(function(d, index){\n\t\t\t\tvar line = [d.id,d.make,d.model,d.serialnumber,d.revision,d.fingerprint,d.created].join(\",\");\n\t\t\t\tlines.push(line);\n\t\t\t});\n\n\t\t\t// Convert the lines array to a downloadable URI\n\t\t\tvar csvContent = lines.join(\"\\n\");\n\t\t\tvar encodedUri = encodeURI(csvContent);\n\n\t\t\t// Create a temporary link so we can name the download file\n\t\t\tvar downloadLink = document.createElement(\"a\");\n\t\t\tdownloadLink.href = encodedUri;\n\t\t\tdownloadLink.download = \"SigningLogs.csv\";\n\n\t\t\t// Click the link and remove it\n\t\t\tdocument.body.appendChild(downloadLink);\n\t\t\tdownloadLink.click();\n\t\t\tdocument.body.removeChild(downloadLink);\n\t\t});\n\t}\n}\n\nexport default SigningLog;\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, { Component } from 'react'\n\n\nclass SigningLogFilter extends Component {\n\n render() {\n if (!this.props.expanded) {\n return (\n
    \n
    {this.props.name}
    \n
    \n );\n }\n\n return (\n
    \n
    {this.props.name}
    \n
      \n {this.props.items.map(function(item, i) {\n return (\n
    • \n {item.name}\n
    • \n );\n }, this)}\n
    \n
    \n );\n }\n}\n\nexport default SigningLogFilter","/*\n * Copyright (C) 2016-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, { Component } from 'react'\nimport {T} from './Utils'\n\nclass Pagination extends Component {\n\n constructor(props) {\n super(props)\n\n this.state = {\n page: 1,\n query: null,\n maxRecords: 50,\n }\n }\n\n pageUp = () => {\n var pages = this.calculatePages();\n var page = this.state.page + 1;\n if (page > pages) {\n page = pages;\n }\n this.setState({page: page});\n this.signalPageChange(page);\n }\n\n pageDown = () => {\n var page = this.state.page - 1;\n if (page <= 0) {\n page = 1;\n }\n this.setState({page: page});\n this.signalPageChange(page);\n }\n\n signalPageChange(page) {\n // Signal the rows that the owner should display\n var startRow = ((page - 1) * this.state.maxRecords);\n this.props.pageChange(startRow, this.props.filterString, this.props.query);\n }\n\n calculatePages() {\n // Use the filtered row count when we a query has been entered\n var length = this.props.totalLogs\n var pages = parseInt(length / this.state.maxRecords, 10);\n if (length % this.state.maxRecords > 0) {\n pages += 1;\n }\n\n if ((this.state.page > pages) && (pages > 0)) {\n this.setState({page: pages})\n }\n return pages;\n }\n\n renderPaging() {\n var pages = this.calculatePages();\n if (pages > 1) {\n return (\n
    \n \n  {this.state.page} of {pages} \n \n
    \n );\n } else {\n return
    ;\n }\n }\n\n render() {\n return (\n
    \n
    \n
    \n \n
    \n {this.renderPaging()}\n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default Pagination\n","/*\n * Copyright (C) 2016-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport SigningLogRow from './SigningLogRow';\nimport AlertBox from './AlertBox';\nimport SigningLogModel from '../models/signinglog' \nimport SigningLogFilter from './SigningLogFilter'\nimport Pagination from './Pagination'\nimport {T, isUserAdmin} from './Utils'\n\nconst PAGINATION_SIZE = 50;\n\nclass SigningLog extends Component {\n constructor(props) {\n\n super(props)\n this.state = {\n logs: [],\n filterModels: [],\n filterString: '',\n message: null,\n expanded: {models: true},\n query: '',\n startRow: 0,\n endRow: PAGINATION_SIZE,\n totalLogs: 0,\n authorityID: this.props.selectedAccount.AuthorityID,\n };\n this.getSigningLogs(0, '', '')\n this.getSigningLogFilters(this.state.authorityID)\n }\n\n handleExpansionClick = (value) => {\n var expanded = this.state.expanded;\n expanded[value] = !expanded[value]\n this.setState({expanded: expanded})\n }\n\n handleItemClick = (index, key) => {\n var items;\n if (key === 'models') {\n items = this.state.filterModels;\n items[index].selected = !items[index].selected;\n var filter = items.filter(i => i.selected === true).map(i => i.name).join(',')\n this.getSigningLogs(0, filter, this.state.query)\n this.setState({filterModels: items, filterString: filter});\n }\n }\n\n getSigningLogs = (offset, filter, serialnumber) => {\n SigningLogModel.listForAccount(this.state.authorityID, offset, filter, serialnumber).then((response) => {\n var data = JSON.parse(response.body);\n var message = null;\n if (!data.success) {\n message = data.message;\n }\n this.setState({logs: data.logs, message: message, totalLogs: data.total_count});\n });\n }\n\n getSigningLogFilters = () => {\n SigningLogModel.filters(this.state.authorityID).then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n var filterModels = data.filters.models.map(function(item) {\n return {name: item, selected: false};\n });\n this.setState({filterModels: filterModels, message: message});\n });\n }\n\n handleSearchChange = (e) => {\n this.getSigningLogs(0, this.state.filterString, e.target.value)\n this.setState({query: e.target.value});\n }\n\n handleDownload = () => {\n SigningLogModel.download(this.state.authorityID, this.state.filterString, this.state.query);\n }\n\n selectedFilters(name) {\n var items = [];\n name.map(function(n) {\n if(n.selected) {\n items.push(n.name);\n }\n return n.name\n });\n return items;\n }\n\n renderTable(items) {\n if (this.state.logs.length > 0) {\n return (\n
    \n \n \n \n \n \n \n \n {this.renderRows(items)}\n \n
    {T('brand')}{T('model')}{T('serial-number')}{T('revision')}{T('fingerprint')}{T('date')}
    \n
    \n );\n } else {\n return (\n

    No models signed.

    \n );\n }\n }\n\n renderRows(items) {\n return items.map((l) => {\n return (\n \n );\n });\n }\n\n render() {\n if (!isUserAdmin(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n\n
    \n

    {T('signinglog')}

    \n
    \n

    {T('signinglog-description')}

    \n
    \n
    \n \n
    \n\n
    \n
    \n
    \n
    \n

    Filter By

    \n \n
    \n
    \n
    \n
    \n \n\n {this.renderTable(this.state.logs)}\n\n
    \n
    \n\n
    \n\n
    \n );\n\n }\n\n}\n\nexport default SigningLog;","/*\n * Copyright (C) 2018-2019 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport {T, isUserAdmin} from './Utils';\n\n\nclass SubstoreForm extends Component {\n\n handleChangeSerial = (e) => {\n e.preventDefault()\n this.props.onChange('serialnumber', e.target.value)\n }\n\n handleChangeSubstore = (e) => {\n e.preventDefault()\n this.props.onChange('store', e.target.value)\n }\n\n handleChangeFromModel = (e) => {\n e.preventDefault()\n this.props.onChange('fromModelID', parseInt(e.target.value, 10))\n }\n\n handleChangeModelName = (e) => {\n e.preventDefault()\n this.props.onChange('modelname', e.target.value)\n }\n\n render() {\n\n var b = this.props.substore\n\n return (\n \n \n
    \n
    \n \n\n \n\n \n\n \n
    \n {isUserAdmin(this.props.token) ?\n \n \n \n \n : \n }\n
    \n \n \n )\n }\n}\n\nexport default SubstoreForm\n","/*\n * Copyright (C) 2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport AlertBox from './AlertBox'\nimport Accounts from '../models/accounts'\nimport {T, isUserAdmin, formatError} from './Utils';\nimport SubstoreForm from './SubstoreForm';\nimport DialogBox from './DialogBox';\n\n\nclass SubstoreList extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n error: null,\n showNew: false,\n showEdit: null,\n showDelete: null,\n substore: {},\n }\n }\n\n handleShowNew = (e) => {\n e.preventDefault();\n this.setState({showNew: true, showEdit: null, showDelete: null, substore: {}})\n }\n\n handleShowEdit = (e) => {\n e.preventDefault();\n var id = parseInt(e.target.getAttribute('data-key'), 10);\n if (this.state.showEdit === id) {\n this.setState({showEdit: null, substore: {}, showDelete: null, showNew: false})\n } else {\n var substores = this.props.substores.filter( (s) => {\n return s.id === id\n })\n\n this.setState({substore: substores[0], showEdit: id, showDelete: null, showNew: false})\n }\n }\n\n handleShowDelete = (e) => {\n e.preventDefault();\n var id = parseInt(e.target.getAttribute('data-key'), 10);\n if (this.state.showDelete === id) {\n this.setState({showDelete: null, showEdit: null, showNew: false})\n } else {\n var substores = this.props.substores.filter( (s) => {\n return s.id === id\n })\n this.setState({substore: substores[0], showDelete: id, showEdit: null, showNew: false})\n }\n }\n\n handleSubstoreChange = (field, value) => {\n var s = this.state.substore\n s[field] = value\n this.setState({substore: s})\n }\n\n handleSaveSubstore = (e) => {\n e.preventDefault()\n\n if (!isUserAdmin(this.props.token)) {\n window.location = '/accounts';\n }\n\n if (!this.state.substore.id) {\n Accounts.storeNew(this.props.selectedAccount.ID, this.state.substore).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: formatError(data)});\n } else {\n this.setState({substore: {}, showNew: false, showEdit: null, showDelete: null, error: null})\n this.props.onRefresh(this.props.selectedAccount)\n }\n })\n } else {\n Accounts.storeUpdate(this.state.substore).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: formatError(data)});\n } else {\n this.props.onRefresh(this.props.selectedAccount)\n this.setState({substore: {}, showNew: false, showEdit: null, showDelete: null, error: null})\n }\n })\n }\n }\n\n handleDeleteSubstore = (e) => {\n e.preventDefault()\n\n Accounts.storeDelete(this.state.substore).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: formatError(data)});\n } else {\n this.props.onRefresh(this.props.selectedAccount)\n this.setState({substore: {}, showNew: false, showEdit: null, showDelete: null, error: null})\n }\n })\n }\n\n handleCancelSubstore = (e) => {\n e.preventDefault()\n this.setState({substore: {}, showNew: false, showEdit: null, showDelete: null, error: null})\n this.props.onRefresh(this.props.selectedAccount)\n }\n\n renderActions(b) {\n if (this.state.showDelete === b.id) {\n return (\n \n );\n } else {\n return (\n
    \n \n  \n \n
    \n )\n }\n }\n\n renderSubstore(b) {\n return (\n \n \n {this.renderActions(b)}\n \n {b.fromModel.model}\n {b.serialnumber}\n {b.store}\n {b.modelname}\n \n )\n }\n\n render() {\n if (!isUserAdmin(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n
    \n
    \n
    \n

    {T('substores')}

    \n  \n
    \n \n
    \n
    \n\n \n\n \n \n \n \n \n \n \n \n {this.state.showNew ?\n \n : ''\n }\n {this.props.substores.map((b) => {\n if (b.id === this.state.showEdit) {\n return ()\n } else {\n return this.renderSubstore(b)\n }\n })}\n \n
    {T('model')}{T('serial-number')}{T('substore')}{T('substore-model')}
    \n
    \n
    \n
    \n )\n\n }\n\n}\n\nexport default SubstoreList\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax';\n\nvar Assertion = {\n\turl: 'assertions',\n\n\tcreate: function(assert) {\n\t\treturn Ajax.post(this.url, assert);\n\t}\n}\n\nexport default Assertion;","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React, {Component} from 'react'\nimport AlertBox from './AlertBox'\nimport Assertion from '../models/assertions'\nimport {T, isUserStandard} from './Utils'\n\nfunction newUTCDate() {\n return new Date(new Date().toUTCString())\n}\n\nclass SystemUserForm extends Component {\n\n constructor(props) {\n super(props);\n\n \tconst startDate = newUTCDate();\n \tconst endDate = new Date(newUTCDate().setFullYear(\n startDate.getFullYear() + 1\n ));\n this.state = {\n email: '',\n username: '',\n password: '',\n name: '',\n model: 0,\n since: startDate,\n until: endDate,\n message: '',\n assertion: null,\n serials: [],\n }\n }\n\n submitAssertion(form) {\n Assertion.create(form).then((response) => {\n var data = JSON.parse(response.body);\n var message = null;\n if (!data.success) {\n message = data.message;\n }\n\n if (data.success) {\n this.setState({assertion: data.assertion, message: message})\n } else {\n this.setState({message: message})\n }\n })\n }\n\n downloadAssertion () {\n return 'data:application/octet-stream;charset=utf-8,' + encodeURIComponent(this.state.assertion)\n }\n\n onShowForm= (e) => {\n e.preventDefault()\n this.setState({assertion: null})\n }\n\n handleChangeEmail = (e) => {\n this.setState({email: e.target.value});\n }\n\n handleChangeUsername = (e) => {\n this.setState({username: e.target.value});\n }\n\n handleChangePassword = (e) => {\n this.setState({password: e.target.value});\n }\n\n handleChangeName = (e) => {\n this.setState({name: e.target.value});\n }\n\n handleChangeModel = (e) => {\n this.setState({model: parseInt(e.target.value, 10)});\n }\n\n handleChangeSinceDateTime = (e) => {\n var date = new Date(e.target.value); \n this.setState({since: date});\n }\n\n handleChangeUntilDateTime = (e) => {\n var date = new Date(e.target.value); \n this.setState({until: date});\n }\n\n handleAddEmptySerialField = (e) => {\n e.preventDefault()\n let tmpSerials = this.state.serials;\n tmpSerials.push('');\n this.setState({serials: tmpSerials});\n }\n\n handleAddSerialNumber = (e) => {\n const i = e.target.dataset.index;\n let tmpSerials = this.state.serials;\n tmpSerials[i] = e.target.value;\n this.setState({serials: tmpSerials}); \n }\n\n onSubmit = (e) => {\n e.preventDefault()\n\n var form = {\n email: this.state.email,\n username: this.state.username,\n password: this.state.password,\n name: this.state.name,\n model: this.state.model,\n since: this.state.since.toISOString(),\n until: this.state.until.toISOString(),\n serials: this.state.serials,\n }\n if (this.validate(form)) {\n // this.props.onSubmit(form)\n this.submitAssertion(form)\n }\n }\n\n validate(form) {\n // Check the mandatory fields\n if ((!form.email) || (!form.username) || (!form.password) || (!form.name) || (!form.model) || (form.model === 0)) {\n this.setState({message: 'All the fields must be entered'});\n return false;\n }\n\n // Check the email\n if (! /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(form.email)) {\n this.setState({message: 'The email is not valid'});\n return false\n }\n\n this.setState({message: ''})\n return true;\n }\n\n render() {\n\n if (!isUserStandard(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n if (this.state.assertion) {\n return (\n
    \n « Back to the form\n

    System User Assertion

    \n\n
    {this.state.assertion}
    \n Download\n
    \n )\n }\n\n return (\n
    \n\n

    {T('create-system-user')}

    \n\n \n\n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n
    \n )\n }\n}\n\nexport default SystemUserForm\n","/*\n * Copyright (C) 2018 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport {T} from './Utils'\n\nclass NavigationSubmenu extends Component {\n\n render() {\n var index = 0;\n return (\n \n )\n }\n}\n\nexport default NavigationSubmenu;\n","/*\n * Copyright (C) 2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport DialogBox from './DialogBox';\nimport {T, roleAsString} from './Utils'\n\nclass UserRow extends Component {\n\trenderActions() {\n\t\tif (this.props.user.ID !== this.props.confirmDelete) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{this.renderActions()}\n\t\t\t\t\n\t\t\t\t{this.props.user.Username}\n\t\t\t\t{this.props.user.Name}\n\t\t\t\t{this.props.user.Email}\n\t\t\t\t{roleAsString(this.props.user.Role)}\n\t\t\t\t{this.props.user.APIKey}\n\t\t\t\n\t\t)\n\t}\n}\n\nexport default UserRow;\n","/*\n * Copyright (C) 2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport Ajax from './Ajax';\n\nvar Users = {\n\turl: 'users',\n\n\tlist: function () {\n\t\treturn Ajax.get(this.url);\n\t},\n\n\tget: function(userId) {\n\t\treturn Ajax.get(this.url + '/' + userId);\n\t},\n\n\tgetotheraccounts: function(userId) {\n\t\treturn Ajax.get(this.url + '/' + userId + '/otheraccounts');\n\t},\n\n\tupdate: function(user) {\n\t\treturn Ajax.put(this.url + '/' + user.id, user);\n\t},\n\n\tdelete: function(user) {\n\t\treturn Ajax.delete(this.url + '/' + user.ID, {});\n\t},\n\n\tcreate: function(user) {\n\t\treturn Ajax.post(this.url, user);\n\t}\n\n}\n\nexport default Users;\n","// -*- Mode: Go; indent-tabs-mode: t -*-\n\n/*\n * Copyright (C) 2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport UserRow from './UserRow';\nimport AlertBox from './AlertBox';\nimport Users from '../models/users';\nimport {T, isUserSuperuser} from './Utils'\n\nclass UserList extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n users: this.props.users || [],\n confirmDelete: null,\n message: null,\n query: this.props.query || '',\n }\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n refresh() {\n this.getUsers();\n }\n\n handleRefresh = () => {\n this.refresh()\n }\n\n getUsers() {\n Users.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n this.setState({users: data.users, message: message});\n });\n }\n\n formatError(data) {\n var message = T(data.error_code);\n if (data.error_subcode) {\n message += ': ' + T(data.error_subcode);\n } else if (data.message) {\n message += ': ' + data.message;\n }\n return message;\n }\n\n handleDelete = (e) => {\n e.preventDefault();\n this.setState({confirmDelete: parseInt(e.target.getAttribute('data-key'), 10)});\n }\n\n handleDeleteUser = (e) => {\n e.preventDefault();\n var users = this.state.users.filter((user) => {\n return user.ID === this.state.confirmDelete;\n });\n if (users.length === 0) {\n return;\n }\n\n Users.delete(users[0]).then((response) => {\n var data = JSON.parse(response.body);\n if ((response.statusCode >= 300) || (!data.success)) {\n this.setState({message: this.formatError(data)});\n } else {\n window.location = '/users';\n }\n });\n }\n\n handleDeleteUserCancel = (e) => {\n e.preventDefault();\n this.setState({confirmDelete: null});\n }\n\n renderTable() {\n\n if (this.state.users.length > 0) {\n return (\n \n \n \n \n \n \n \n {this.state.users.map((user) => {\n if (this.state.query) {\n if (!user.Username.includes(this.state.query) && !user.Email.includes(this.state.query)){\n return null\n }\n }\n return (\n \n );\n })}\n \n
    {T('username')}{T('name')}{T('email')}{T('role')}{T('api-key')}
    \n );\n } else {\n return (\n

    No users found.

    \n );\n }\n }\n\n render() {\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n\n
    \n
    \n

    {T('users')}

    \n  \n \n
    \n
    \n

    {T('users_available')}:

    \n
    \n
    \n \n
    \n
    \n {this.renderTable()}\n
    \n
    \n\n
    \n );\n }\n}\n\nexport default UserList;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, {Component} from 'react';\nimport AlertBox from './AlertBox';\nimport Users from '../models/users';\nimport Accounts from '../models/accounts';\nimport {T, isUserSuperuser} from './Utils';\n\nclass UserEdit extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n title: null,\n user: {},\n error: null,\n hideForm: false,\n // TODO temporary move user.Accounts to userAccounts, as backend provides accounts for the user \n // that way. In future this will be get in an independant call.\n assignedAccounts: [],\n availableAccounts: [],\n }\n }\n\n componentDidMount() {\n if (this.props.id) {\n this.setTitle('edit-user');\n this.getUser(this.props.id);\n } else {\n this.setTitle('new-user');\n }\n this.getAllAccounts();\n }\n\n setTitle(title) {\n this.setState({title: T(title)});\n }\n\n getUser(userId) {\n Users.get(userId).then((response) => {\n var data = JSON.parse(response.body);\n\n if (response.statusCode >= 300) {\n this.setState({error: this.formatError(data), hideForm: true});\n } else {\n this.setState({\n user: data.user, \n assignedAccounts: this.accountsToAuthorityIDs(data.user.Accounts),\n hideForm: false,\n });\n }\n });\n }\n\n getAllAccounts() {\n var self = this;\n Accounts.list().then(function(response) {\n var data = JSON.parse(response.body);\n self.setState({\n availableAccounts: self.accountsToAuthorityIDs(data.accounts),\n });\n });\n }\n\n accountsToAuthorityIDs(accounts) {\n var accs = [];\n for (var i = 0; i < accounts.length; ++i) {\n accs.push(accounts[i].AuthorityID)\n }\n return accs;\n }\n\n formatError(data) {\n var message = T(data.error_code);\n if (data.error_subcode) {\n message += ': ' + T(data.error_subcode);\n } else if (data.message) {\n message += ': ' + data.message;\n }\n return message;\n }\n\n buildSelectBoxOption = (val) => {\n return ; \n }\n\n handleChangeUsername = (e) => {\n var user = this.state.user;\n user.Username = e.target.value;\n this.setState({user: user});\n }\n\n handleChangeName = (e) => {\n var user = this.state.user;\n user.Name = e.target.value;\n this.setState({user: user});\n }\n\n handleChangeEmail = (e) => {\n var user = this.state.user;\n user.Email = e.target.value;\n this.setState({user: user});\n }\n\n handleChangeRole = (e) => {\n var user = this.state.user;\n user.Role = parseInt(e.target.value, 10);\n this.setState({user: user});\n }\n\n buildRequestData() {\n var requestData = {}\n var user = this.state.user\n requestData['id'] = user.ID\n requestData['username'] = user.Username\n requestData['name'] = user.Name\n requestData['email'] = user.Email\n requestData['role'] = user.Role\n requestData['api_key'] = user.APIKey\n requestData['accounts'] = this.state.assignedAccounts\n return requestData\n }\n\n handleSaveClick = (e) => {\n e.preventDefault();\n\n var requestData = this.buildRequestData()\n\n if (requestData.id) {\n // Update the existing user\n Users.update(requestData).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: this.formatError(data)});\n } else {\n window.location = '/users';\n }\n });\n } else {\n // Create a new user\n Users.create(requestData).then((response) => {\n var data = JSON.parse(response.body);\n if (response.statusCode >= 300) {\n this.setState({error: this.formatError(data)});\n } else {\n window.location = '/users';\n }\n });\n }\n }\n\n handleClickAccount = (e) => {\n e.preventDefault();\n var acc = e.target.getAttribute('data-account');\n var accounts = this.state.assignedAccounts;\n\n var index = this.state.assignedAccounts.indexOf(acc);\n if (index < 0) {\n // Not found, so select it\n accounts.push(acc);\n } else {\n // Found, so remove it\n accounts.splice(index, 1);\n }\n this.setState({assignedAccounts: accounts});\n }\n\n renderAccountSelect(acc) {\n var style = 'p-button--neutral';\n if (this.state.assignedAccounts.indexOf(acc) >= 0) {\n style = 'p-button--brand';\n }\n\n return (\n \n );\n }\n\n renderError() {\n if (this.state.error) {\n return (\n \n );\n }\n }\n\n render() {\n var self = this;\n\n if (!isUserSuperuser(this.props.token)) {\n return (\n
    \n \n
    \n )\n }\n\n if (this.state.hideForm) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n
    \n

    {this.state.title}

    \n\n \n\n
    \n
    \n \n \n \n \n \n
    \n\n

    {T('user-accounts')}

    \n \n
    \n

    {T('select-accounts')}

    \n\n
    \n {this.state.availableAccounts.map(function(acc) {\n return self.renderAccountSelect(acc);\n })}\n
    \n
    \n
    \n\n \n
    \n
    \n
    \n )\n }\n}\n\nexport default UserEdit;\n","/*\n * Copyright (C) 2017-2018 Canonical Ltd\n * License granted by Canonical Limited\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\n\nimport React, { Component } from 'react';\nimport Header from './components/Header'\nimport Footer from './components/Footer'\nimport Index from './components/Index'\nimport ModelList from './components/ModelList'\nimport ModelEdit from './components/ModelEdit'\nimport KeypairAdd from './components/KeypairAdd'\nimport KeypairEdit from './components/KeypairEdit'\nimport KeypairGenerate from './components/KeypairGenerate'\nimport KeypairStore from './components/KeypairStore'\nimport AccountList from './components/AccountList'\nimport AccountForm from './components/AccountForm'\nimport AccountEdit from './components/AccountEdit'\nimport AccountKeyForm from './components/AccountKeyForm'\nimport Keypair from './components/Keypair'\nimport SigningLog from './components/SigningLog'\nimport SubstoreList from './components/SubstoreList'\nimport SystemUserForm from './components/SystemUserForm'\nimport NavigationSubmenu from './components/NavigationSubmenu';\nimport UserList from './components/UserList'\nimport UserEdit from './components/UserEdit'\nimport Accounts from './models/accounts'\nimport Keypairs from './models/keypairs'\nimport Models from './models/models';\nimport {sectionFromPath, sectionIdFromPath, subSectionIdFromPath, isLoggedIn, getAccount, saveAccount, isUserAdmin, isUserSuperuser, formatError} from './components/Utils'\nimport createHistory from 'history/createBrowserHistory'\nimport './sass/App.css'\n\nconst history = createHistory()\nconst submenuModels = ['models','substores','systemuser']\n\nclass App extends Component {\n constructor(props) {\n super(props)\n this.state = {\n location: history.location,\n token: props.token || {},\n models: [],\n accounts: [],\n keypairs: [],\n substores: [],\n selectedAccount: getAccount() || {},\n }\n\n history.listen(this.handleNavigation.bind(this))\n this.getAccounts()\n }\n\n handleNavigation(location) {\n this.setState({ location: location })\n window.scrollTo(0, 0)\n }\n\n getAccounts() {\n if (isLoggedIn(this.props.token)) {\n Accounts.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n\n var selectedAccount = this.state.selectedAccount;\n if ((!this.state.selectedAccount.ID) && (!getAccount().AuthorityID)) {\n // Set to the first in the account list\n if (data.accounts.length > 0) {\n selectedAccount = data.accounts[0]\n saveAccount(selectedAccount)\n }\n } else {\n // Refresh the current account details\n if (data.accounts.length > 0) {\n var accs = data.accounts.filter((a) => {\n return this.state.selectedAccount.ID === a.ID\n })\n if (accs.length > 0) {\n selectedAccount = accs[0]\n saveAccount(selectedAccount)\n }\n }\n }\n\n this.updateDataForRoute(selectedAccount)\n this.setState({accounts: data.accounts, selectedAccount: selectedAccount, message: message});\n });\n }\n }\n\n getKeypairs(authorityID) {\n Keypairs.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n\n var keypairs = data.keypairs.filter((k) => {\n return k.AuthorityID === authorityID;\n })\n\n this.setState({keypairs: keypairs, message: message});\n });\n }\n\n getModels(authorityID) {\n Models.list().then((response) => {\n var data = JSON.parse(response.body);\n var message = \"\";\n if (!data.success) {\n message = data.message;\n }\n\n var models = data.models.filter((m) => {\n return m['brand-id'] === authorityID;\n })\n\n this.setState({models: models, message: message});\n });\n }\n\n getSubstores(accountId) {\n Accounts.stores(accountId).then((response) => {\n var data = JSON.parse(response.body);\n\n if (response.statusCode >= 300) {\n this.setState({message: formatError(data), hideForm: true});\n } else {\n this.setState({substores: data.substores, message: null});\n }\n });\n }\n\n updateDataForRoute(selectedAccount) {\n var currentSection = sectionFromPath(window.location.pathname);\n\n if(currentSection==='accounts') {this.getKeypairs(selectedAccount.AuthorityID)}\n if(currentSection==='signing-keys') {this.getKeypairs(selectedAccount.AuthorityID)}\n if(currentSection==='models') {\n this.getModels(selectedAccount.AuthorityID)\n this.getKeypairs(selectedAccount.AuthorityID)\n }\n if(currentSection==='substores') {\n if (selectedAccount.ID) {\n this.getSubstores(selectedAccount.ID)\n }\n this.getModels(selectedAccount.AuthorityID)\n }\n if(currentSection==='systemuser') {this.getModels(selectedAccount.AuthorityID)}\n }\n\n handleAccountChange = (account) => {\n saveAccount(account)\n this.setState({selectedAccount: account})\n\n this.updateDataForRoute(account)\n }\n\n renderModels() {\n const id = sectionIdFromPath(window.location.pathname, 'models')\n \n switch(id) {\n case 'new':\n return \n case '':\n return \n default:\n return \n }\n }\n\n renderAccounts() {\n const id = sectionIdFromPath(window.location.pathname, 'accounts')\n const sub = subSectionIdFromPath(window.location.pathname, 'accounts')\n\n switch(id) {\n case 'upload':\n return \n case 'new':\n return \n case 'account':\n return \n case 'key-assertion':\n return \n default:\n return \n }\n }\n\n renderUsers() {\n const id = sectionIdFromPath(window.location.pathname, 'users')\n\n switch(id) {\n case 'new':\n return \n case '':\n const urlParams = new URLSearchParams(window.location.search);\n const query = urlParams.get('query');\n return \n default:\n return \n }\n }\n\n renderKeypairs() {\n const id = sectionIdFromPath(window.location.pathname, 'signing-keys')\n\n switch(id) {\n case 'generate':\n return \n case 'new':\n return \n case '':\n return \n case 'store':\n return \n default:\n return \n }\n }\n\n render() {\n var currentSection = sectionFromPath(window.location.pathname);\n\n return (\n
    \n
    \n\n
    \n\n {(isUserAdmin(this.props.token)||isUserSuperuser(this.props.token)) &&\n (currentSection==='models'||currentSection==='substores'||currentSection==='systemuser')? \n
    \n \n
    \n : ''}\n \n {currentSection==='home'? : ''}\n {currentSection==='notfound'? : ''}\n\n {currentSection==='signing-keys'? this.renderKeypairs(): ''}\n {currentSection==='models'? this.renderModels() : ''}\n\n {currentSection==='accounts'? this.renderAccounts() : ''}\n {currentSection==='signinglog'? : ''}\n\n {currentSection==='substores'? : ''}\n {currentSection==='systemuser'? : ''}\n\n {currentSection==='users'? this.renderUsers() : ''}\n\n
    \n
    \n )\n }\n}\n\nexport default App;\n","/*\n * Copyright (C) 2016-2017 Canonical Ltd\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n//import registerServiceWorker from './registerServiceWorker';\nimport {getAuthToken} from './components/Utils'\n\n// Imports for i18n\nimport {IntlProvider} from 'react-intl';\n\n// Translated messages\nimport Messages from './components/messages';\n\nwindow.AppState = {\n container: document.getElementById(\"main\"),\n\n getLocale: function() {\n return localStorage.getItem('locale') || 'en';\n },\n\n setLocale: function(lang) {\n localStorage.setItem('locale', lang);\n },\n\n render: function() {\n var locale = this.getLocale();\n\n getAuthToken( (token) => {\n ReactDOM.render((\n \n \n \n ), this.container);\n })\n },\n\n unmount: function() {\n ReactDOM.unmountComponentAtNode(this.container);\n },\n\n rerender: function() {\n this.unmount();\n this.render();\n }\n}\n\nwindow.AppState.render()\n//registerServiceWorker();\n"],"sourceRoot":""}