# Source: app/controllers/SettingsController.js

    var dao = require('../model/dao/DAOs.js')
      , entities = require('../model/Entities/Entities.js');

    var SettingsController;

    /**
     * REST API - Settings controller. Allows user to manage app settings from client interface through REST API.
     * @param {Connection} db
     * @constructor
     */
    SettingsController = function(db)
    {
      this.db = db;
      this.settings = new dao.SettingsDAO(db);
    }

    /**
     * GET /api/settings
     * For more information see web service documentation.
     *
     * @param req
     * @param res
     * @param next
     */
    SettingsController.prototype.load = function(req, res, next)
    {
      this.settings.load(function(settings) {
        if(req.session.role == entities.User.ROLE_ADMIN) {
          res.json(settings);
        } else {
          res.status(403).send('403 Forbidden');
        }
      });
    };

    /**
     * PUT /api/settings
     * For more information see web service documentation.
     *
     * @param req
     * @param res
     * @param next
     */
    SettingsController.prototype.save = function(req, res, next)
    {
      var settings = new entities.Settings();
      settings.setOfflineMessage(req.body.offlineMessage)
              .setCookieExpiration(req.body.cookieExpiration)
              .setUrl(req.body.url);

      this.settings.persist(settings, function() {
        res.json(settings);
      });
    };

    exports.SettingsController = SettingsController;