Przeglądaj źródła

write swagger and validator

itizawa 6 lat temu
rodzic
commit
083e80cd4a

+ 0 - 2
src/client/js/services/PersonalContainer.js

@@ -117,8 +117,6 @@ export default class PersonalContainer extends Container {
       });
       const { updatedUser } = response.data;
 
-      console.log(updatedUser.lang);
-
       this.setState({
         name: updatedUser.name,
         email: updatedUser.email,

+ 55 - 2
src/server/routes/apiv3/personal-setting.js

@@ -15,6 +15,25 @@ const ErrorV3 = require('../../models/vo/error-apiv3');
  *  tags:
  *    name: PsersonalSetting
  */
+
+/**
+ * @swagger
+ *
+ *  components:
+ *    schemas:
+ *      PersonalSettings:
+ *        description: personal settings
+ *        type: object
+ *        properties:
+ *          name:
+ *            type: string
+ *          email:
+ *            type: string
+ *          lang:
+ *            type: string
+ *          isEmailPublished:
+ *            type: boolean
+ */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middleware/login-required')(crowi);
   const csrf = require('../../middleware/csrf')(crowi);
@@ -24,6 +43,15 @@ module.exports = (crowi) => {
 
   const { ApiV3FormValidator } = crowi.middlewares;
 
+  const validator = {
+    personal: [
+      body('name').isString().not().isEmpty(),
+      body('email').isEmail(),
+      body('lang').isString().isIn(['en-US', 'ja']),
+      body('isEmailPublished').isBoolean(),
+    ],
+  };
+
   /**
    * @swagger
    *
@@ -49,8 +77,33 @@ module.exports = (crowi) => {
     return res.apiv3({ currentUser });
   });
 
-  // TODO swagger & validation
-  router.put('/', loginRequiredStrictly, csrf, async(req, res) => {
+  /**
+   * @swagger
+   *
+   *    /personal-setting:
+   *      put:
+   *        tags: [PersonalSetting]
+   *        operationId: updatePersonalSetting
+   *        summary: /personal-setting
+   *        description: Update personal setting
+   *        requestBody:
+   *          required: true
+   *          content:
+   *            application/json:
+   *              schema:
+   *                $ref: '#/components/schemas/PersonalSettings'
+   *        responses:
+   *          200:
+   *            description: params of personal
+   *            content:
+   *              application/json:
+   *                schema:
+   *                  properties:
+   *                    currentUser:
+   *                      type: object
+   *                      description: personal params
+   */
+  router.put('/', loginRequiredStrictly, csrf, validator.personal, ApiV3FormValidator, async(req, res) => {
     const {
       name, email, lang, isEmailPublished,
     } = req.body;

+ 0 - 1
src/server/routes/me.js

@@ -52,7 +52,6 @@ module.exports = function(crowi, app) {
   const debug = require('debug')('growi:routes:me');
   const logger = require('@alias/logger')('growi:routes:me');
   const models = crowi.models;
-  const User = models.User;
   const UserGroupRelation = models.UserGroupRelation;
   const ExternalAccount = models.ExternalAccount;
   const ApiResponse = require('../util/apiResponse');