Skip to content

Commit 9f6141b

Browse files
committed
feat: riskAssessments integration
1 parent 0eb5df8 commit 9f6141b

File tree

19 files changed

+754
-0
lines changed

19 files changed

+754
-0
lines changed

docs/resource-specific-documentation.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,30 @@ phoneProviders:
576576
]
577577
```
578578

579+
## Risk Assessments
580+
581+
Risk assessments configuration allows you to enable or disable risk assessment features for your tenant.
582+
583+
### YAML Example
584+
585+
```yaml
586+
# Contents of ./tenant.yaml
587+
riskAssessments:
588+
enabled: true
589+
```
590+
591+
### Directory Example
592+
593+
File: `./risk-assessments/settings.json`
594+
595+
```json
596+
{
597+
"enabled": true
598+
}
599+
```
600+
601+
For more details, see the [Management API documentation](https://auth0.com/docs/api/management/v2#!/Risk_Assessments/get_settings).
602+
579603
## Connection Profiles
580604

581605
Application specific configuration for use with the OIN Express Configuration feature
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"enabled": false
3+
}

examples/yaml/tenant.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,3 +419,6 @@ userAttributeProfiles:
419419
type: "email"
420420
required: true
421421

422+
riskAssessments:
423+
enabled: false
424+

src/context/directory/handlers/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import actions from './actions';
1818
import organizations from './organizations';
1919
import triggers from './triggers';
2020
import attackProtection from './attackProtection';
21+
import riskAssessments from './riskAssessments';
22+
import riskAssessmentsNewDevice from './riskAssessmentsNewDevice';
2123
import branding from './branding';
2224
import phoneProviders from './phoneProvider';
2325
import logStreams from './logStreams';
@@ -69,6 +71,8 @@ const directoryHandlers: {
6971
organizations,
7072
triggers,
7173
attackProtection,
74+
riskAssessments,
75+
riskAssessmentsNewDevice,
7276
branding,
7377
phoneProviders,
7478
logStreams,
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import path from 'path';
2+
import fs from 'fs-extra';
3+
import { constants } from '../../../tools';
4+
import { dumpJSON, existsMustBeDir, loadJSON } from '../../../utils';
5+
import { DirectoryHandler } from '.';
6+
import DirectoryContext from '..';
7+
import { ParsedAsset, Asset } from '../../../types';
8+
9+
type ParsedRiskAssessments = ParsedAsset<'riskAssessments', Asset>;
10+
11+
function parse(context: DirectoryContext): ParsedRiskAssessments {
12+
const riskAssessmentsDirectory = path.join(
13+
context.filePath,
14+
constants.RISK_ASSESSMENTS_DIRECTORY
15+
);
16+
const riskAssessmentsFile = path.join(riskAssessmentsDirectory, 'settings.json');
17+
18+
if (!existsMustBeDir(riskAssessmentsDirectory)) {
19+
return { riskAssessments: null };
20+
}
21+
22+
const riskAssessments = loadJSON(riskAssessmentsFile, {
23+
mappings: context.mappings,
24+
disableKeywordReplacement: context.disableKeywordReplacement,
25+
});
26+
27+
return {
28+
riskAssessments,
29+
};
30+
}
31+
32+
async function dump(context: DirectoryContext): Promise<void> {
33+
const { riskAssessments } = context.assets;
34+
35+
if (!riskAssessments) return;
36+
37+
const riskAssessmentsDirectory = path.join(
38+
context.filePath,
39+
constants.RISK_ASSESSMENTS_DIRECTORY
40+
);
41+
const riskAssessmentsFile = path.join(riskAssessmentsDirectory, 'settings.json');
42+
43+
fs.ensureDirSync(riskAssessmentsDirectory);
44+
dumpJSON(riskAssessmentsFile, riskAssessments);
45+
}
46+
47+
const riskAssessmentsHandler: DirectoryHandler<ParsedRiskAssessments> = {
48+
parse,
49+
dump,
50+
};
51+
52+
export default riskAssessmentsHandler;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import path from 'path';
2+
import fs from 'fs-extra';
3+
import { constants } from '../../../tools';
4+
import { dumpJSON, existsMustBeDir, loadJSON } from '../../../utils';
5+
import { DirectoryHandler } from '.';
6+
import DirectoryContext from '..';
7+
import { ParsedAsset, Asset } from '../../../types';
8+
9+
type ParsedRiskAssessmentsNewDevice = ParsedAsset<'riskAssessmentsNewDevice', Asset>;
10+
11+
function parse(context: DirectoryContext): ParsedRiskAssessmentsNewDevice {
12+
const riskAssessmentsDirectory = path.join(
13+
context.filePath,
14+
constants.RISK_ASSESSMENTS_DIRECTORY
15+
);
16+
const newDeviceFile = path.join(riskAssessmentsDirectory, 'new-device.json');
17+
18+
if (!existsMustBeDir(riskAssessmentsDirectory)) {
19+
return { riskAssessmentsNewDevice: null };
20+
}
21+
22+
const riskAssessmentsNewDevice = loadJSON(newDeviceFile, {
23+
mappings: context.mappings,
24+
disableKeywordReplacement: context.disableKeywordReplacement,
25+
});
26+
27+
return {
28+
riskAssessmentsNewDevice,
29+
};
30+
}
31+
32+
async function dump(context: DirectoryContext): Promise<void> {
33+
const { riskAssessmentsNewDevice } = context.assets;
34+
35+
if (!riskAssessmentsNewDevice) return;
36+
37+
const riskAssessmentsDirectory = path.join(
38+
context.filePath,
39+
constants.RISK_ASSESSMENTS_DIRECTORY
40+
);
41+
const newDeviceFile = path.join(riskAssessmentsDirectory, 'new-device.json');
42+
43+
fs.ensureDirSync(riskAssessmentsDirectory);
44+
dumpJSON(newDeviceFile, riskAssessmentsNewDevice);
45+
}
46+
47+
const riskAssessmentsNewDeviceHandler: DirectoryHandler<ParsedRiskAssessmentsNewDevice> = {
48+
parse,
49+
dump,
50+
};
51+
52+
export default riskAssessmentsNewDeviceHandler;

src/context/yaml/handlers/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import organizations from './organizations';
1818
import actions from './actions';
1919
import triggers from './triggers';
2020
import attackProtection from './attackProtection';
21+
import riskAssessments from './riskAssessments';
22+
import riskAssessmentsNewDevice from './riskAssessmentsNewDevice';
2123
import branding from './branding';
2224
import phoneProviders from './phoneProvider';
2325
import logStreams from './logStreams';
@@ -67,6 +69,8 @@ const yamlHandlers: { [key in AssetTypes]: YAMLHandler<{ [key: string]: unknown
6769
organizations,
6870
triggers,
6971
attackProtection,
72+
riskAssessments,
73+
riskAssessmentsNewDevice,
7074
branding,
7175
phoneProviders,
7276
logStreams,
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { YAMLHandler } from '.';
2+
import YAMLContext from '..';
3+
import { Asset, ParsedAsset } from '../../../types';
4+
5+
type ParsedRiskAssessments = ParsedAsset<'riskAssessments', Asset>;
6+
7+
async function parse(context: YAMLContext): Promise<ParsedRiskAssessments> {
8+
const { riskAssessments } = context.assets;
9+
10+
if (!riskAssessments) return { riskAssessments: null };
11+
12+
return {
13+
riskAssessments,
14+
};
15+
}
16+
17+
async function dump(context: YAMLContext): Promise<ParsedRiskAssessments> {
18+
const { riskAssessments } = context.assets;
19+
20+
if (!riskAssessments) return { riskAssessments: null };
21+
22+
return {
23+
riskAssessments,
24+
};
25+
}
26+
27+
const riskAssessmentsHandler: YAMLHandler<ParsedRiskAssessments> = {
28+
parse: parse,
29+
dump: dump,
30+
};
31+
32+
export default riskAssessmentsHandler;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { YAMLHandler } from '.';
2+
import YAMLContext from '..';
3+
import { Asset, ParsedAsset } from '../../../types';
4+
5+
type ParsedRiskAssessmentsNewDevice = ParsedAsset<'riskAssessmentsNewDevice', Asset>;
6+
7+
async function parse(context: YAMLContext): Promise<ParsedRiskAssessmentsNewDevice> {
8+
const { riskAssessmentsNewDevice } = context.assets;
9+
10+
if (!riskAssessmentsNewDevice) return { riskAssessmentsNewDevice: null };
11+
12+
return {
13+
riskAssessmentsNewDevice,
14+
};
15+
}
16+
17+
async function dump(context: YAMLContext): Promise<ParsedRiskAssessmentsNewDevice> {
18+
const { riskAssessmentsNewDevice } = context.assets;
19+
20+
if (!riskAssessmentsNewDevice) return { riskAssessmentsNewDevice: null };
21+
22+
return {
23+
riskAssessmentsNewDevice,
24+
};
25+
}
26+
27+
const riskAssessmentsNewDeviceHandler: YAMLHandler<ParsedRiskAssessmentsNewDevice> = {
28+
parse: parse,
29+
dump: dump,
30+
};
31+
32+
export default riskAssessmentsNewDeviceHandler;

src/tools/auth0/handlers/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import * as actions from './actions';
2424
import * as triggers from './triggers';
2525
import * as organizations from './organizations';
2626
import * as attackProtection from './attackProtection';
27+
import * as riskAssessments from './riskAssessments';
28+
import * as riskAssessmentsNewDevice from './riskAssessmentsNewDevice';
2729
import * as logStreams from './logStreams';
2830
import * as customDomains from './customDomains';
2931
import * as themes from './themes';
@@ -66,6 +68,8 @@ const auth0ApiHandlers: { [key in AssetTypes]: any } = {
6668
triggers,
6769
organizations,
6870
attackProtection,
71+
riskAssessments,
72+
riskAssessmentsNewDevice,
6973
logStreams,
7074
customDomains,
7175
themes,

0 commit comments

Comments
 (0)