Skip to content

Commit 545c521

Browse files
committed
Merge branch 'develop' into 'fb-optic-1677'
Workflow run: https://github.com/HumanSignal/label-studio/actions/runs/13451696957
2 parents eeed3b4 + 10cc631 commit 545c521

File tree

13 files changed

+64
-27
lines changed

13 files changed

+64
-27
lines changed

label_studio/feature_flags.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,6 +1297,33 @@
12971297
"version": 2,
12981298
"deleted": false
12991299
},
1300+
"fflag_feat_all_leap_1825_annotator_evaluation_short": {
1301+
"key": "fflag_feat_all_leap_1825_annotator_evaluation_short",
1302+
"on": false,
1303+
"prerequisites": [],
1304+
"targets": [],
1305+
"contextTargets": [],
1306+
"rules": [],
1307+
"fallthrough": {
1308+
"variation": 0
1309+
},
1310+
"offVariation": 1,
1311+
"variations": [
1312+
true,
1313+
false
1314+
],
1315+
"clientSideAvailability": {
1316+
"usingMobileKey": false,
1317+
"usingEnvironmentId": false
1318+
},
1319+
"clientSide": false,
1320+
"salt": "d22daddab39444af9f4e3802a4d6bbf2",
1321+
"trackEvents": false,
1322+
"trackEventsFallthrough": false,
1323+
"debugEventsUntilDate": null,
1324+
"version": 2,
1325+
"deleted": false
1326+
},
13001327
"fflag_feat_all_leap_883_custom_script_270524_short": {
13011328
"key": "fflag_feat_all_leap_883_custom_script_270524_short",
13021329
"on": true,

label_studio/jwt_auth/middleware.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,17 @@ def __call__(self, request):
2323
try:
2424
user_and_token = JWTAuthentication().authenticate(request)
2525
if not user_and_token:
26+
logger.debug('JWT auth could not resolve user/token')
2627
return self.get_response(request)
2728

2829
user = User.objects.get(pk=user_and_token[0].pk)
2930
if user.active_organization.jwt.api_tokens_enabled:
31+
logger.debug('JWT auth resolved user/token')
3032
request.user = user
3133
request.is_jwt = True
34+
else:
35+
logger.debug('JWT auth resolved user/token, but org does not have jwt enabled')
36+
3237
except User.DoesNotExist:
3338
logger.info('JWT authentication failed: User no longer exists')
3439
return JsonResponse({'detail': 'User not found'}, status=status.HTTP_401_UNAUTHORIZED)

web/apps/labelstudio/src/utils/helpers.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,3 @@ export const getLastTraceback = (traceback: string): string => {
141141

142142
return lastTraceIndex >= 0 ? lines.slice(lastTraceIndex).join("\n") : traceback;
143143
};
144-
145-
export const isFlagEnabled = (id: string, flagList: Record<string, boolean>, defaultValue = false) => {
146-
if (id in flagList) {
147-
return flagList[id] === true ?? defaultValue;
148-
}
149-
return defaultValue;
150-
};

web/apps/labelstudio/src/utils/license-flags.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { isFlagEnabled } from "./helpers";
1+
import { isFlagEnabled } from "@humansignal/core/lib/utils/helpers";
22

33
/**
44
* Control Visibility and Access of Cloud Storage Connectors for Managers

web/dist/apps/labelstudio/main.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/dist/apps/labelstudio/main.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/dist/apps/labelstudio/vendor.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/dist/apps/labelstudio/vendor.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"message": "feat: block sentry in frontend side (#6615)",
3-
"commit": "560e33091fa392bec906ca43f082afb1657b11a7",
4-
"date": "2025-02-13T23:13:39.000Z",
2+
"message": "fix: OPTIC-1709: Ensure checks for feature flag enablement are done correctly (#7121)",
3+
"commit": "459ffbf8e7a133c938453ae21b689dd28280b5ea",
4+
"date": "2025-02-20T22:35:54.000Z",
55
"branch": "develop"
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"message": "feat: block sentry in frontend side (#6615)",
3-
"commit": "560e33091fa392bec906ca43f082afb1657b11a7",
4-
"date": "2025-02-13T23:13:39.000Z",
2+
"message": "fix: OPTIC-1709: Ensure checks for feature flag enablement are done correctly (#7121)",
3+
"commit": "459ffbf8e7a133c938453ae21b689dd28280b5ea",
4+
"date": "2025-02-20T22:35:54.000Z",
55
"branch": "develop"
66
}

web/dist/libs/editor/version.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"message": "feat: block sentry in frontend side (#6615)",
3-
"commit": "560e33091fa392bec906ca43f082afb1657b11a7",
4-
"date": "2025-02-13T23:13:39.000Z",
2+
"message": "fix: OPTIC-1709: Ensure checks for feature flag enablement are done correctly (#7121)",
3+
"commit": "459ffbf8e7a133c938453ae21b689dd28280b5ea",
4+
"date": "2025-02-20T22:35:54.000Z",
55
"branch": "develop"
66
}

web/libs/core/src/lib/utils/helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export const isFlagEnabled = (id: string, flagList: Record<string, boolean>, defaultValue = false) => {
22
if (id in flagList) {
3-
return flagList[id] === true || defaultValue;
3+
return flagList[id] === true;
44
}
55
return defaultValue;
66
};

web/libs/core/src/pages/AccountSettings/sections/PersonalJWTToken.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import styles from "./PersonalJWTToken.module.scss";
1313
* each one of these eventually has to be migrated to core/ui
1414
*/
1515
import { API } from "/apps/labelstudio/src/providers/ApiProvider";
16-
import { modal } from "/apps/labelstudio/src/components/Modal/Modal";
16+
import { modal, confirm } from "/apps/labelstudio/src/components/Modal/Modal";
1717
import { Button } from "/apps/labelstudio/src/components/Button/Button";
1818
import { Input, Label } from "/apps/labelstudio/src/components/Form/Elements";
1919
import { Tooltip } from "/apps/labelstudio/src/components/Tooltip/Tooltip";
@@ -99,21 +99,32 @@ export function PersonalJWTToken() {
9999
const [dialogOpened, setDialogOpened] = useState(false);
100100
const tokens = useAtomValue(tokensListAtom);
101101
const revokeToken = useAtomValue(revokeTokenAtom);
102+
const createToken = useAtomValue(refreshTokenAtom);
102103

103104
const tokensListClassName = clsx({
104105
[styles.tokensList]: tokens.data && tokens.data.length,
105106
});
106107

107108
const revoke = useCallback(
108109
async (token: string) => {
109-
await revokeToken.mutateAsync({ token });
110+
confirm({
111+
title: "Revoke Token",
112+
body: `Are you sure you want to delete this access token? Any application using this token will need a new token to be able to access ${
113+
window?.APP_SETTINGS?.app_name || "Label Studio"
114+
}`,
115+
okText: "Revoke",
116+
buttonLook: "danger",
117+
onOk: async () => {
118+
await revokeToken.mutateAsync({ token });
119+
},
120+
});
110121
},
111122
[revokeToken],
112123
);
113124

114125
const disallowAddingTokens = useMemo(() => {
115-
return tokens.isLoading || (tokens.data?.length ?? 0) > 0;
116-
}, [tokens.isLoading, tokens.data]);
126+
return createToken.isPending || tokens.isLoading || (tokens.data?.length ?? 0) > 0;
127+
}, [createToken.isPending, tokens.isLoading, tokens.data]);
117128

118129
function openDialog() {
119130
if (dialogOpened) return;
@@ -123,6 +134,7 @@ export function PersonalJWTToken() {
123134
title: "New Auth Token",
124135
style: { width: 680 },
125136
body: CreateTokenForm,
137+
closeOnClickOutside: false,
126138
onHidden: () => setDialogOpened(false),
127139
});
128140
}
@@ -161,7 +173,7 @@ export function PersonalJWTToken() {
161173
</div>
162174
<Tooltip title="You can only have one active token" disabled={!disallowAddingTokens}>
163175
<div style={{ width: "max-content" }}>
164-
<Button disabled={disallowAddingTokens} onClick={openDialog}>
176+
<Button disabled={disallowAddingTokens || dialogOpened} onClick={openDialog}>
165177
Create New Token
166178
</Button>
167179
</div>

0 commit comments

Comments
 (0)