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
}
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://"
switch accessResp.Payload.BackendMode {
case "tcpTunnel":

View File

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

View File

@ -121,7 +121,7 @@ func (h *orgAccountOverviewHandler) Handle(params metadata.OrgAccountOverviewPar
for _, fe := range fes {
envFe := &rest_model_zrok.Frontend{
ID: int64(fe.Id),
FeToken: fe.Token,
FrontendToken: fe.Token,
ZID: fe.ZId,
CreatedAt: fe.CreatedAt.UnixMilli(),
UpdatedAt: fe.UpdatedAt.UnixMilli(),

View File

@ -87,7 +87,7 @@ func (h *overviewHandler) Handle(_ metadata.OverviewParams, principal *rest_mode
for _, fe := range fes {
envFe := &rest_model_zrok.Frontend{
ID: int64(fe.Id),
FeToken: fe.Token,
FrontendToken: fe.Token,
ZID: fe.ZId,
CreatedAt: fe.CreatedAt.UnixMilli(),
UpdatedAt: fe.UpdatedAt.UnixMilli(),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -29,7 +29,7 @@ class Frontend(object):
"""
swagger_types = {
'id': 'int',
'fe_token': 'str',
'frontend_token': 'str',
'share_token': 'str',
'description': 'str',
'z_id': 'str',
@ -39,7 +39,7 @@ class Frontend(object):
attribute_map = {
'id': 'id',
'fe_token': 'feToken',
'frontend_token': 'frontendToken',
'share_token': 'shareToken',
'description': 'description',
'z_id': 'zId',
@ -47,10 +47,10 @@ class Frontend(object):
'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
self._id = None
self._fe_token = None
self._frontend_token = None
self._share_token = None
self._description = None
self._z_id = None
@ -59,8 +59,8 @@ class Frontend(object):
self.discriminator = None
if id is not None:
self.id = id
if fe_token is not None:
self.fe_token = fe_token
if frontend_token is not None:
self.frontend_token = frontend_token
if share_token is not None:
self.share_token = share_token
if description is not None:
@ -94,25 +94,25 @@ class Frontend(object):
self._id = id
@property
def fe_token(self):
"""Gets the fe_token of this Frontend. # noqa: E501
def frontend_token(self):
"""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
"""
return self._fe_token
return self._frontend_token
@fe_token.setter
def fe_token(self, fe_token):
"""Sets the fe_token of this Frontend.
@frontend_token.setter
def frontend_token(self, frontend_token):
"""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
"""
self._fe_token = fe_token
self._frontend_token = frontend_token
@property
def share_token(self):

View File

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

View File

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

View File

@ -16,7 +16,7 @@ interface ReleaseAccessProps {
const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAccessProps) => {
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 checkedRef = useRef<boolean>(checked);
@ -30,17 +30,17 @@ const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAcce
}, [isOpen]);
useEffect(() => {
if(detail && detail.feToken) {
setFeToken(detail.feToken);
if(detail && detail.frontendToken) {
setFrontendToken(detail.frontendToken);
}
}, [detail]);
const releaseAccess = () => {
setErrorMessage(null);
if(detail && detail.feToken) {
if(detail && detail.frontendToken) {
getShareApi(user).unaccess({
body: {
frontendToken: detail.feToken,
frontendToken: detail.frontendToken,
envZId: access.data.envZId as string,
shareToken: detail.shareToken
}
@ -52,7 +52,7 @@ const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAcce
e.response.json().then(ex => {
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(() => {
setErrorMessage(null);
setChecked(false);
@ -68,10 +68,10 @@ const ReleaseAccessModal = ({ close, isOpen, user, access, detail }: ReleaseAcce
<Typography variant="h5"><strong>Release Access</strong></Typography>
</Grid2>
<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 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>
{ errorMessage ? <Grid2 container sx={{ mb: 2, p: 1}}><Typography>{errorMessage}</Typography></Grid2> : null}
<Grid2 container sx={{ flexGrow: 1 }} alignItems="center">

View File

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

View File

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