290 lines
6.1 KiB
JSON
290 lines
6.1 KiB
JSON
{
|
|
"name": "user",
|
|
"base": "User",
|
|
"strict": true,
|
|
"idInjection": true,
|
|
"emailVerificationRequired": false,
|
|
"trackChanges": false,
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"index": {
|
|
"mongodb": {
|
|
"unique": true,
|
|
"background": true,
|
|
"sparse": true
|
|
}
|
|
}
|
|
},
|
|
"emailVerifyTTL": {
|
|
"type": "date"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"progressTimestamps": {
|
|
"type": "array",
|
|
"default": []
|
|
},
|
|
"isBanned": {
|
|
"type": "boolean",
|
|
"description": "User is banned from posting to camper news",
|
|
"default": false
|
|
},
|
|
"isCheater": {
|
|
"type": "boolean",
|
|
"description": "Users who are confirmed to have broken academic honesty policy are marked as cheaters",
|
|
"default": false
|
|
},
|
|
"isGithubCool": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"githubId": {
|
|
"type": "string"
|
|
},
|
|
"githubURL": {
|
|
"type": "string"
|
|
},
|
|
"githubEmail": {
|
|
"type": "string"
|
|
},
|
|
"joinedGithubOn": {
|
|
"type": "date"
|
|
},
|
|
"isMigrationGrandfathered": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"index": {
|
|
"mongodb": {
|
|
"unique": true,
|
|
"background": true
|
|
}
|
|
},
|
|
"require": true
|
|
},
|
|
"bio": {
|
|
"type": "string",
|
|
"default": ""
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"default": ""
|
|
},
|
|
"gender": {
|
|
"type": "string",
|
|
"default": ""
|
|
},
|
|
"location": {
|
|
"type": "string",
|
|
"default": ""
|
|
},
|
|
"picture": {
|
|
"type": "string",
|
|
"default": ""
|
|
},
|
|
"linkedin": {
|
|
"type": "string"
|
|
},
|
|
"codepen": {
|
|
"type": "string"
|
|
},
|
|
"twitter": {
|
|
"type": "string"
|
|
},
|
|
"currentStreak": {
|
|
"type": "number",
|
|
"default": 0
|
|
},
|
|
"longestStreak": {
|
|
"type": "number",
|
|
"default": 0
|
|
},
|
|
"sendMonthlyEmail": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"sendNotificationEmail": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"sendQuincyEmail": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"isLocked": {
|
|
"type": "boolean",
|
|
"description": "Campers profile does not show challenges/certificates to the public",
|
|
"default": false
|
|
},
|
|
"currentChallengeId": {
|
|
"type": "string",
|
|
"default": "",
|
|
"description": "The challenge last visited by the user"
|
|
},
|
|
"currentChallenge": {
|
|
"type": {},
|
|
"description": "deprecated"
|
|
},
|
|
"isUniqMigrated": {
|
|
"type": "boolean",
|
|
"description": "Campers completedChallenges array is free of duplicates",
|
|
"default": false
|
|
},
|
|
"isHonest": {
|
|
"type": "boolean",
|
|
"description": "Camper has signed academic honesty policy",
|
|
"default": false
|
|
},
|
|
"isFrontEndCert": {
|
|
"type": "boolean",
|
|
"description": "Camper is front end certified",
|
|
"default": false
|
|
},
|
|
"isDataVisCert": {
|
|
"type": "boolean",
|
|
"description": "Camper is data visualization certified",
|
|
"default": false
|
|
},
|
|
"isBackEndCert": {
|
|
"type": "boolean",
|
|
"description": "Campers is back end certified",
|
|
"default": false
|
|
},
|
|
"isFullStackCert": {
|
|
"type": "boolean",
|
|
"description": "Campers is full stack certified",
|
|
"default": false
|
|
},
|
|
"isChallengeMapMigrated": {
|
|
"type": "boolean",
|
|
"description": "Migrate completedChallenges array to challenge map",
|
|
"default": false
|
|
},
|
|
"challengeMap": {
|
|
"type": "object",
|
|
"description": "A map by ID of all the user completed challenges",
|
|
"default": {}
|
|
},
|
|
"completedChallenges": {
|
|
"type": [
|
|
{
|
|
"completedDate": "number",
|
|
"lastUpdated": "number",
|
|
"id": "string",
|
|
"name": "string",
|
|
"completedWith": "string",
|
|
"solution": "string",
|
|
"githubLink": "string",
|
|
"verified": "boolean",
|
|
"challengeType": {
|
|
"type": "number",
|
|
"default": 0
|
|
}
|
|
}
|
|
],
|
|
"default": []
|
|
},
|
|
"rand": {
|
|
"type": "number",
|
|
"index": true
|
|
},
|
|
"tshirtVote": {
|
|
"type": "number"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"theme": {
|
|
"type": "string",
|
|
"default": "default"
|
|
},
|
|
"languageTag": {
|
|
"type": "string",
|
|
"description": "An IETF language tag",
|
|
"default": "en"
|
|
},
|
|
"badges": {
|
|
"type": {
|
|
"coreTeam": {
|
|
"type": "array",
|
|
"default": []
|
|
}
|
|
},
|
|
"default": {}
|
|
}
|
|
},
|
|
"validations": [],
|
|
"relations": {
|
|
"credentials": {
|
|
"type": "hasMany",
|
|
"model": "userCredential",
|
|
"foreignKey": ""
|
|
},
|
|
"identities": {
|
|
"type": "hasMany",
|
|
"model": "userIdentity",
|
|
"foreignKey": ""
|
|
},
|
|
"pledge": {
|
|
"type": "hasOne",
|
|
"model": "pledge",
|
|
"foreignKey": ""
|
|
}
|
|
},
|
|
"acls": [
|
|
{
|
|
"accessType": "*",
|
|
"principalType": "ROLE",
|
|
"principalId": "$everyone",
|
|
"permission": "DENY"
|
|
},
|
|
{
|
|
"accessType": "EXECUTE",
|
|
"principalType": "ROLE",
|
|
"principalId": "$everyone",
|
|
"permission": "ALLOW",
|
|
"property": "doesExist"
|
|
},
|
|
{
|
|
"accessType": "EXECUTE",
|
|
"principalType": "ROLE",
|
|
"principalId": "$everyone",
|
|
"permission": "ALLOW",
|
|
"property": "about"
|
|
},
|
|
{
|
|
"accessType": "EXECUTE",
|
|
"principalType": "ROLE",
|
|
"principalId": "$everyone",
|
|
"permission": "ALLOW",
|
|
"property": "giveBrowniePoints"
|
|
},
|
|
{
|
|
"accessType": "EXECUTE",
|
|
"principalType": "ROLE",
|
|
"principalId": "$owner",
|
|
"permission": "ALLOW",
|
|
"property": "updateEmail"
|
|
},
|
|
{
|
|
"accessType": "EXECUTE",
|
|
"principalType": "ROLE",
|
|
"principalId": "$owner",
|
|
"permission": "ALLOW",
|
|
"property": "updateTheme"
|
|
},
|
|
{
|
|
"accessType": "EXECUTE",
|
|
"principalType": "ROLE",
|
|
"principalId": "$owner",
|
|
"permission": "ALLOW",
|
|
"property": "updateLanguage"
|
|
}
|
|
],
|
|
"methods": {}
|
|
}
|