{"version":3,"file":"ServiceAccountCreatePage.4f989fb6cd2a41193ff0.js","mappings":"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","sources":["webpack://grafana/./public/app/features/serviceaccounts/ServiceAccountCreatePage.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { getBackendSrv, locationService } from '@grafana/runtime';\nimport { Form, Button, Input, Field, FieldSet } from '@grafana/ui';\nimport { Page } from 'app/core/components/Page/Page';\nimport { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker';\nimport { fetchRoleOptions, updateUserRoles } from 'app/core/components/RolePicker/api';\nimport { contextSrv } from 'app/core/core';\nimport { AccessControlAction, OrgRole, Role, ServiceAccountCreateApiResponse, ServiceAccountDTO } from 'app/types';\n\nimport { OrgRolePicker } from '../admin/OrgRolePicker';\n\nexport interface Props {}\n\nconst createServiceAccount = async (sa: ServiceAccountDTO) => {\n const result = await getBackendSrv().post('/api/serviceaccounts/', sa);\n await contextSrv.fetchUserPermissions();\n return result;\n};\n\nconst updateServiceAccount = async (id: number, sa: ServiceAccountDTO) =>\n getBackendSrv().patch(`/api/serviceaccounts/${id}`, sa);\n\nexport const ServiceAccountCreatePage = ({}: Props): JSX.Element => {\n const [roleOptions, setRoleOptions] = useState([]);\n const [pendingRoles, setPendingRoles] = useState([]);\n\n const currentOrgId = contextSrv.user.orgId;\n const [serviceAccount, setServiceAccount] = useState({\n id: 0,\n orgId: contextSrv.user.orgId,\n role: contextSrv.licensedAccessControlEnabled() ? OrgRole.None : OrgRole.Viewer,\n tokens: 0,\n name: '',\n login: '',\n isDisabled: false,\n createdAt: '',\n teams: [],\n });\n\n useEffect(() => {\n async function fetchOptions() {\n try {\n if (contextSrv.hasPermission(AccessControlAction.ActionRolesList)) {\n let options = await fetchRoleOptions(currentOrgId);\n setRoleOptions(options);\n }\n } catch (e) {\n console.error('Error loading options', e);\n }\n }\n if (contextSrv.licensedAccessControlEnabled()) {\n fetchOptions();\n }\n }, [currentOrgId]);\n\n const onSubmit = useCallback(\n async (data: ServiceAccountDTO) => {\n data.role = serviceAccount.role;\n const response = await createServiceAccount(data);\n try {\n const newAccount: ServiceAccountCreateApiResponse = {\n avatarUrl: response.avatarUrl,\n id: response.id,\n isDisabled: response.isDisabled,\n login: response.login,\n name: response.name,\n orgId: response.orgId,\n role: response.role,\n tokens: response.tokens,\n };\n await updateServiceAccount(response.id, data);\n if (\n contextSrv.licensedAccessControlEnabled() &&\n contextSrv.hasPermission(AccessControlAction.ActionUserRolesAdd) &&\n contextSrv.hasPermission(AccessControlAction.ActionUserRolesRemove)\n ) {\n await updateUserRoles(pendingRoles, newAccount.id, newAccount.orgId);\n }\n } catch (e) {\n console.error(e);\n }\n locationService.push(`/org/serviceaccounts/${response.id}`);\n },\n [serviceAccount.role, pendingRoles]\n );\n\n const onRoleChange = (role: OrgRole) => {\n setServiceAccount({\n ...serviceAccount,\n role: role,\n });\n };\n\n const onPendingRolesUpdate = (roles: Role[], userId: number, orgId: number | undefined) => {\n // keep the new role assignments for user\n setPendingRoles(roles);\n };\n\n return (\n \n \n
\n {({ register, errors }) => {\n return (\n <>\n
\n \n \n \n \n {contextSrv.licensedAccessControlEnabled() ? (\n \n ) : (\n \n )}\n \n
\n \n \n );\n }}\n
\n
\n
\n );\n};\n\nexport default ServiceAccountCreatePage;\n"],"names":["createServiceAccount","sa","result","updateServiceAccount","id","ServiceAccountCreatePage","roleOptions","setRoleOptions","pendingRoles","setPendingRoles","currentOrgId","serviceAccount","setServiceAccount","fetchOptions","options","onSubmit","data","response","newAccount","e","onRoleChange","role","onPendingRolesUpdate","roles","userId","orgId","register","errors"],"sourceRoot":""}