frontendToken; frontend description (#834)

This commit is contained in:
Michael Quigley 2025-02-05 11:05:42 -05:00
parent 5228e25fb7
commit e95e5c3fe8
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
15 changed files with 65 additions and 55 deletions

View File

@ -138,6 +138,14 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
bindAddress = autoAddress bindAddress = autoAddress
} }
upReq := share.NewUpdateAccessParams()
upReq.Body.FrontendToken = accessResp.Payload.FrontendToken
upReq.Body.Description = bindAddress
_, err = zrok.Share.UpdateAccess(upReq, auth)
if err != nil {
cmd.error(err)
}
protocol := "http://" protocol := "http://"
switch accessResp.Payload.BackendMode { switch accessResp.Payload.BackendMode {
case "tcpTunnel": case "tcpTunnel":

View File

@ -46,11 +46,14 @@ func (h *getFrontendDetailHandler) Handle(params metadata.GetFrontendDetailParam
return metadata.NewGetFrontendDetailNotFound() return metadata.NewGetFrontendDetailNotFound()
} }
payload := &rest_model_zrok.Frontend{ payload := &rest_model_zrok.Frontend{
ID: int64(fe.Id), ID: int64(fe.Id),
FeToken: fe.Token, FrontendToken: fe.Token,
ZID: fe.ZId, ZID: fe.ZId,
CreatedAt: fe.CreatedAt.UnixMilli(), CreatedAt: fe.CreatedAt.UnixMilli(),
UpdatedAt: fe.UpdatedAt.UnixMilli(), UpdatedAt: fe.UpdatedAt.UnixMilli(),
}
if fe.Description != nil {
payload.Description = *fe.Description
} }
if fe.PrivateShareId != nil { if fe.PrivateShareId != nil {
shr, err := str.GetShare(*fe.PrivateShareId, trx) shr, err := str.GetShare(*fe.PrivateShareId, trx)

View File

@ -120,11 +120,11 @@ func (h *orgAccountOverviewHandler) Handle(params metadata.OrgAccountOverviewPar
} }
for _, fe := range fes { for _, fe := range fes {
envFe := &rest_model_zrok.Frontend{ envFe := &rest_model_zrok.Frontend{
ID: int64(fe.Id), ID: int64(fe.Id),
FeToken: fe.Token, FrontendToken: fe.Token,
ZID: fe.ZId, ZID: fe.ZId,
CreatedAt: fe.CreatedAt.UnixMilli(), CreatedAt: fe.CreatedAt.UnixMilli(),
UpdatedAt: fe.UpdatedAt.UnixMilli(), UpdatedAt: fe.UpdatedAt.UnixMilli(),
} }
if fe.PrivateShareId != nil { if fe.PrivateShareId != nil {
feShr, err := str.GetShare(*fe.PrivateShareId, trx) feShr, err := str.GetShare(*fe.PrivateShareId, trx)

View File

@ -86,11 +86,11 @@ func (h *overviewHandler) Handle(_ metadata.OverviewParams, principal *rest_mode
} }
for _, fe := range fes { for _, fe := range fes {
envFe := &rest_model_zrok.Frontend{ envFe := &rest_model_zrok.Frontend{
ID: int64(fe.Id), ID: int64(fe.Id),
FeToken: fe.Token, FrontendToken: fe.Token,
ZID: fe.ZId, ZID: fe.ZId,
CreatedAt: fe.CreatedAt.UnixMilli(), CreatedAt: fe.CreatedAt.UnixMilli(),
UpdatedAt: fe.UpdatedAt.UnixMilli(), UpdatedAt: fe.UpdatedAt.UnixMilli(),
} }
if fe.PrivateShareId != nil { if fe.PrivateShareId != nil {
feShr, err := str.GetShare(*fe.PrivateShareId, trx) feShr, err := str.GetShare(*fe.PrivateShareId, trx)

View File

@ -56,11 +56,11 @@ func (h *updateAccessHandler) Handle(params share.UpdateAccessParams, principal
logrus.Errorf("error updating frontend '%v': %v", feToken, err) logrus.Errorf("error updating frontend '%v': %v", feToken, err)
return share.NewUpdateAccessInternalServerError() return share.NewUpdateAccessInternalServerError()
} }
logrus.Warnf("updated frontend '%v' description to '%v'", feToken, *fe.Description)
if err := trx.Commit(); err != nil { if err := trx.Commit(); err != nil {
logrus.Errorf("error committing transaction for frontend '%v': %v", feToken, err) logrus.Errorf("error committing transaction for frontend '%v': %v", feToken, err)
return share.NewUpdateAccessInternalServerError() return share.NewUpdateAccessInternalServerError()
} }
return share.NewUpdateAccessOK() return share.NewUpdateAccessOK()
} }

View File

@ -23,8 +23,8 @@ type Frontend struct {
// description // description
Description string `json:"description,omitempty"` Description string `json:"description,omitempty"`
// fe token // frontend token
FeToken string `json:"feToken,omitempty"` FrontendToken string `json:"frontendToken,omitempty"`
// id // id
ID int64 `json:"id,omitempty"` ID int64 `json:"id,omitempty"`

View File

@ -1999,7 +1999,7 @@ func init() {
"description": { "description": {
"type": "string" "type": "string"
}, },
"feToken": { "frontendToken": {
"type": "string" "type": "string"
}, },
"id": { "id": {
@ -4248,7 +4248,7 @@ func init() {
"description": { "description": {
"type": "string" "type": "string"
}, },
"feToken": { "frontendToken": {
"type": "string" "type": "string"
}, },
"id": { "id": {

View File

@ -14,7 +14,7 @@ import { RequestFile } from './models';
export class Frontend { export class Frontend {
'id'?: number; 'id'?: number;
'feToken'?: string; 'frontendToken'?: string;
'shareToken'?: string; 'shareToken'?: string;
'description'?: string; 'description'?: string;
'zId'?: string; 'zId'?: string;
@ -30,8 +30,8 @@ export class Frontend {
"type": "number" "type": "number"
}, },
{ {
"name": "feToken", "name": "frontendToken",
"baseName": "feToken", "baseName": "frontendToken",
"type": "string" "type": "string"
}, },
{ {

View File

@ -4,7 +4,7 @@
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**id** | **int** | | [optional] **id** | **int** | | [optional]
**fe_token** | **str** | | [optional] **frontend_token** | **str** | | [optional]
**share_token** | **str** | | [optional] **share_token** | **str** | | [optional]
**description** | **str** | | [optional] **description** | **str** | | [optional]
**z_id** | **str** | | [optional] **z_id** | **str** | | [optional]

View File

@ -29,7 +29,7 @@ class Frontend(object):
""" """
swagger_types = { swagger_types = {
'id': 'int', 'id': 'int',
'fe_token': 'str', 'frontend_token': 'str',
'share_token': 'str', 'share_token': 'str',
'description': 'str', 'description': 'str',
'z_id': 'str', 'z_id': 'str',
@ -39,7 +39,7 @@ class Frontend(object):
attribute_map = { attribute_map = {
'id': 'id', 'id': 'id',
'fe_token': 'feToken', 'frontend_token': 'frontendToken',
'share_token': 'shareToken', 'share_token': 'shareToken',
'description': 'description', 'description': 'description',
'z_id': 'zId', 'z_id': 'zId',
@ -47,10 +47,10 @@ class Frontend(object):
'updated_at': 'updatedAt' 'updated_at': 'updatedAt'
} }
def __init__(self, id=None, fe_token=None, share_token=None, description=None, z_id=None, created_at=None, updated_at=None): # noqa: E501 def __init__(self, id=None, frontend_token=None, share_token=None, description=None, z_id=None, created_at=None, updated_at=None): # noqa: E501
"""Frontend - a model defined in Swagger""" # noqa: E501 """Frontend - a model defined in Swagger""" # noqa: E501
self._id = None self._id = None
self._fe_token = None self._frontend_token = None
self._share_token = None self._share_token = None
self._description = None self._description = None
self._z_id = None self._z_id = None
@ -59,8 +59,8 @@ class Frontend(object):
self.discriminator = None self.discriminator = None
if id is not None: if id is not None:
self.id = id self.id = id
if fe_token is not None: if frontend_token is not None:
self.fe_token = fe_token self.frontend_token = frontend_token
if share_token is not None: if share_token is not None:
self.share_token = share_token self.share_token = share_token
if description is not None: if description is not None:
@ -94,25 +94,25 @@ class Frontend(object):
self._id = id self._id = id
@property @property
def fe_token(self): def frontend_token(self):
"""Gets the fe_token of this Frontend. # noqa: E501 """Gets the frontend_token of this Frontend. # noqa: E501
:return: The fe_token of this Frontend. # noqa: E501 :return: The frontend_token of this Frontend. # noqa: E501
:rtype: str :rtype: str
""" """
return self._fe_token return self._frontend_token
@fe_token.setter @frontend_token.setter
def fe_token(self, fe_token): def frontend_token(self, frontend_token):
"""Sets the fe_token of this Frontend. """Sets the frontend_token of this Frontend.
:param fe_token: The fe_token of this Frontend. # noqa: E501 :param frontend_token: The frontend_token of this Frontend. # noqa: E501
:type: str :type: str
""" """
self._fe_token = fe_token self._frontend_token = frontend_token
@property @property
def share_token(self): def share_token(self):

View File

@ -1241,7 +1241,7 @@ definitions:
properties: properties:
id: id:
type: integer type: integer
feToken: frontendToken:
type: string type: string
shareToken: shareToken:
type: string type: string

View File

@ -25,7 +25,7 @@ const AccessPanel = ({ access }: AccessPanelProps) => {
} }
useEffect(() => { useEffect(() => {
getMetadataApi(user).getFrontendDetail({feId: access.data.feId as number}) getMetadataApi(user).getFrontendDetail({frontendId: access.data.feId as number})
.then(d => { .then(d => {
delete d.id; delete d.id;
delete d.zId; delete d.zId;
@ -43,7 +43,6 @@ const AccessPanel = ({ access }: AccessPanelProps) => {
const labels = { const labels = {
createdAt: "Created", createdAt: "Created",
feToken: "Frontend Token",
updatedAt: "Updated", updatedAt: "Updated",
} }

View File

@ -16,7 +16,7 @@ interface ReleaseAccessProps {
const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAccessProps) => { const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAccessProps) => {
const [errorMessage, setErrorMessage] = useState<React.JSX.Element>(null); const [errorMessage, setErrorMessage] = useState<React.JSX.Element>(null);
const [feToken, setFeToken] = useState<String>(""); const [frontendToken, setFrontendToken] = useState<String>("");
const [checked, setChecked] = useState<boolean>(false); const [checked, setChecked] = useState<boolean>(false);
const checkedRef = useRef<boolean>(checked); const checkedRef = useRef<boolean>(checked);
@ -30,17 +30,17 @@ const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAcce
}, [isOpen]); }, [isOpen]);
useEffect(() => { useEffect(() => {
if(detail && detail.feToken) { if(detail && detail.frontendToken) {
setFeToken(detail.feToken); setFrontendToken(detail.frontendToken);
} }
}, [detail]); }, [detail]);
const releaseAccess = () => { const releaseAccess = () => {
setErrorMessage(null); setErrorMessage(null);
if(detail && detail.feToken) { if(detail && detail.frontendToken) {
getShareApi(user).unaccess({ getShareApi(user).unaccess({
body: { body: {
frontendToken: detail.feToken, frontendToken: detail.frontendToken,
envZId: access.data.envZId as string, envZId: access.data.envZId as string,
shareToken: detail.shareToken shareToken: detail.shareToken
} }
@ -52,7 +52,7 @@ const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAcce
e.response.json().then(ex => { e.response.json().then(ex => {
console.log("releaseAccess", ex.message); console.log("releaseAccess", ex.message);
}); });
setErrorMessage(<Typography color="red">An error occurred releasing your access <code>{detail.feToken}</code>!</Typography>); setErrorMessage(<Typography color="red">An error occurred releasing your access <code>{detail.frontendToken}</code>!</Typography>);
setTimeout(() => { setTimeout(() => {
setErrorMessage(null); setErrorMessage(null);
setChecked(false); setChecked(false);
@ -68,10 +68,10 @@ const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAcce
<Typography variant="h5"><strong>Release Access</strong></Typography> <Typography variant="h5"><strong>Release Access</strong></Typography>
</Grid2> </Grid2>
<Grid2 container sx={{ flexGrow: 1, p: 1 }} alignItems="center"> <Grid2 container sx={{ flexGrow: 1, p: 1 }} alignItems="center">
<Typography variant="body1">Would you like to release the access <code>{feToken}</code> ?</Typography> <Typography variant="body1">Would you like to release the access <code>{frontendToken}</code> ?</Typography>
</Grid2> </Grid2>
<Grid2 container sx={{ flexGrow: 1, p: 1 }} alignItems="center"> <Grid2 container sx={{ flexGrow: 1, p: 1 }} alignItems="center">
<FormControlLabel control={<Checkbox checked={checked} onChange={toggleChecked} />} label={<p>I confirm the release of <code>{feToken}</code></p>} sx={{ mt: 2 }} /> <FormControlLabel control={<Checkbox checked={checked} onChange={toggleChecked} />} label={<p>I confirm the release of <code>{frontendToken}</code></p>} sx={{ mt: 2 }} />
</Grid2> </Grid2>
{ errorMessage ? <Grid2 container sx={{ mb: 2, p: 1}}><Typography>{errorMessage}</Typography></Grid2> : null} { errorMessage ? <Grid2 container sx={{ mb: 2, p: 1}}><Typography>{errorMessage}</Typography></Grid2> : null}
<Grid2 container sx={{ flexGrow: 1 }} alignItems="center"> <Grid2 container sx={{ flexGrow: 1 }} alignItems="center">

View File

@ -30,7 +30,7 @@ export interface Frontend {
* @type {string} * @type {string}
* @memberof Frontend * @memberof Frontend
*/ */
feToken?: string; frontendToken?: string;
/** /**
* *
* @type {string} * @type {string}
@ -81,7 +81,7 @@ export function FrontendFromJSONTyped(json: any, ignoreDiscriminator: boolean):
return { return {
'id': json['id'] == null ? undefined : json['id'], 'id': json['id'] == null ? undefined : json['id'],
'feToken': json['feToken'] == null ? undefined : json['feToken'], 'frontendToken': json['frontendToken'] == null ? undefined : json['frontendToken'],
'shareToken': json['shareToken'] == null ? undefined : json['shareToken'], 'shareToken': json['shareToken'] == null ? undefined : json['shareToken'],
'description': json['description'] == null ? undefined : json['description'], 'description': json['description'] == null ? undefined : json['description'],
'zId': json['zId'] == null ? undefined : json['zId'], 'zId': json['zId'] == null ? undefined : json['zId'],
@ -97,7 +97,7 @@ export function FrontendToJSON(value?: Frontend | null): any {
return { return {
'id': value['id'], 'id': value['id'],
'feToken': value['feToken'], 'frontendToken': value['frontendToken'],
'shareToken': value['shareToken'], 'shareToken': value['shareToken'],
'description': value['description'], 'description': value['description'],
'zId': value['zId'], 'zId': value['zId'],

View File

@ -78,9 +78,9 @@ export const mergeGraph = (oldVov: Graph, u: User, limited: boolean, newOv: Over
envNode.data.empty = false; envNode.data.empty = false;
env.frontends.forEach(fe => { env.frontends.forEach(fe => {
let feNode = { let feNode = {
id: fe.feToken!, id: fe.frontendToken!,
data: { data: {
label: fe.feToken!, label: fe.frontendToken!,
feId: fe.id, feId: fe.id,
target: fe.shareToken, target: fe.shareToken,
envZId: fe.zId, envZId: fe.zId,