1
1
import config from "../../config/config" ;
2
+ import { UNAUTHORIZED_TO_CREATE_ONBOARDING_EXTENSION_REQUEST } from "../constants/responses" ;
2
3
import { DISCORD_BASE_URL } from "../constants/urls" ;
3
4
import { env } from "../typeDefinitions/default.types" ;
4
5
import { generateDiscordAuthToken } from "./authTokenGenerator" ;
6
+ import { getUserDetails } from "./getUserDetails" ;
5
7
import { sendReplyInDiscordChannel } from "./sendReplyInDiscordChannel" ;
6
8
7
9
export type CreateOnboardingExtensionArgs = {
8
- userId : string ;
10
+ userId ? : string ;
9
11
channelId : number ;
10
12
reason : string ;
11
13
numberOfDays : number ;
@@ -25,19 +27,28 @@ export const createOnboardingExtension = async (
25
27
"RS256"
26
28
) ;
27
29
30
+ let content : string ;
28
31
const discordReplyUrl = `${ DISCORD_BASE_URL } /channels/${ channelId } /messages` ;
32
+
33
+ if ( args . userId && args . discordId !== args . userId ) {
34
+ const userResponse = await getUserDetails ( args . discordId ) ;
35
+ if ( ! userResponse . user ?. roles ?. super_user ) {
36
+ content = `<@${ args . discordId } > ${ UNAUTHORIZED_TO_CREATE_ONBOARDING_EXTENSION_REQUEST } ` ;
37
+ return await sendReplyInDiscordChannel ( discordReplyUrl , content , env ) ;
38
+ }
39
+ }
40
+
41
+ const userDiscordId = args . userId ? args . userId : args . discordId ;
29
42
const base_url = config ( env ) . RDS_BASE_API_URL ;
30
43
const createOnboardingExtensionUrl = `${ base_url } /requests?dev=true` ;
44
+
31
45
const requestBody = {
32
- userId : args . userId ,
46
+ userId : userDiscordId ,
33
47
type : "ONBOARDING" ,
34
48
numberOfDays : args . numberOfDays ,
35
- requestedBy : args . discordId ,
36
49
reason : args . reason ,
37
50
} ;
38
51
39
- let content : string ;
40
-
41
52
try {
42
53
const response = await fetch ( createOnboardingExtensionUrl , {
43
54
method : "POST" ,
@@ -51,9 +62,9 @@ export const createOnboardingExtension = async (
51
62
message : string ;
52
63
} ;
53
64
content = `<@${ args . discordId } > ${ jsonResponse . message } ` ;
54
- await sendReplyInDiscordChannel ( discordReplyUrl , content , env ) ;
65
+ return await sendReplyInDiscordChannel ( discordReplyUrl , content , env ) ;
55
66
} catch ( err ) {
56
67
content = `<@${ args . discordId } > Error occurred while creating onboarding extension request.` ;
57
- await sendReplyInDiscordChannel ( discordReplyUrl , content , env ) ;
68
+ return await sendReplyInDiscordChannel ( discordReplyUrl , content , env ) ;
58
69
}
59
70
} ;
0 commit comments