Skip to content

Commit

Permalink
feat: add list users
Browse files Browse the repository at this point in the history
useful only for MA-56
  • Loading branch information
linuxbandit committed Nov 7, 2020
1 parent e92955b commit 9926f0d
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/config/configFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const config = require('config');

config.GsuiteKeys = require('./myaegee-serviceaccount.json');
config.GsuiteKeys.delegatedUser = require('./secrets.json').delegatedUser;
config.customer_ID = require('./secrets.json').customer_ID;

module.exports = config;
// module.exports = exports = config ;
75 changes: 74 additions & 1 deletion lib/gsuite-wrapper.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const {runGsuiteOperation, gsuiteOperations} = require('./google-suite.js');

const log = require('./util/logger.js');

const config = require('./config/configFile.js');
const redis = require('./redis.js').db;

// API DEFINITION
Expand Down Expand Up @@ -558,6 +558,79 @@ exports.editAccount = async function(req, res, next) {

return res.status(statusCode).json(response);
};

/**
* @swagger
*
* /account:
* get:
* description: Get all accounts on gsuite (used only once)
* tags:
* - Account
* produces:
* - application/json
* parameters:
* - name: pageToken
* description: The token for the next page of results
* in: query
* required: false
* type: string
* - name: max
* description: Max returned (default ?max=10)
* in: query
* required: false
* type: string
* - name: q
* description: The query (default ?q=orgUnitPath=/individuals )
* in: query
* required: false
* type: string
* - name: sort
* description: Sorting order (default ?sort=ASCENDING)
* in: query
* required: false
* type: string
* responses:
* 200:
* description: The user list is returned
* schema:
* '$ref': '#/definitions/successResponse'
* 403:
* description: Unauthorised
* schema:
* '$ref': '#/definitions/generalResponse'
* 500:
* description: Internal error
* schema:
* '$ref': '#/definitions/errorResponse'
*/

exports.listAccounts = async function(req, res , next) {
log.debug(req.headers['test-title']);

const payload = {
"pageToken": req.query.pageToken,
"maxResults": req.query.max,
"query": req.query.q || "orgUnitPath=/individuals",
"sortOrder": req.query.sort || "ASCENDING",
"customer": config.customer_ID,
"orderBy": "familyName"
};

try{
let result = await runGsuiteOperation(gsuiteOperations.listAccounts, payload);
response = {success: result.success, message: "There you go mate", data: result.data };
statusCode = result.code;

}catch(GsuiteError){
log.warn("GsuiteError");
response = {success: false, errors: GsuiteError.errors, message: GsuiteError.errors[0].message };
statusCode = GsuiteError.code;
}

return res.status(statusCode).json(response);
};

/**
* @swagger
*
Expand Down
1 change: 1 addition & 0 deletions lib/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ GsuiteRouter.post('/group', wrapper.createGroup); // circle is created -> create
GsuiteRouter.put('/account/:userPK/group', wrapper.editMembershipToGroup); // user is into a circle -> user is added to a group
GsuiteRouter.delete('/group/:bodyPK', wrapper.deleteGroup); // body is deleted -> group is deleted //FIXME: archived*

GsuiteRouter.get('/account', wrapper.listAccounts); //retrieve list of accounts
GsuiteRouter.post('/account', wrapper.createAccount); // member is created -> create an account
GsuiteRouter.put('/account/:userPK/alias', wrapper.updateAlias); // user may need an alias (netcom-xxx@aegee.eu)
GsuiteRouter.get('/account/:userPK/alias', wrapper.getAliasFromRedis); // user can read their alias (netcom-xxx@aegee.eu)
Expand Down

0 comments on commit 9926f0d

Please sign in to comment.