Annotation of embedaddon/strongswan/src/manager/controller/auth_controller.c, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2007 Martin Willi
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: #include "auth_controller.h"
                     17: #include "../manager.h"
                     18: 
                     19: #include <library.h>
                     20: 
                     21: 
                     22: typedef struct private_auth_controller_t private_auth_controller_t;
                     23: 
                     24: /**
                     25:  * private data of the task manager
                     26:  */
                     27: struct private_auth_controller_t {
                     28: 
                     29:        /**
                     30:         * public functions
                     31:         */
                     32:        auth_controller_t public;
                     33: 
                     34:        /**
                     35:         * manager instance
                     36:         */
                     37:        manager_t *manager;
                     38: };
                     39: 
                     40: static void login(private_auth_controller_t *this, fast_request_t *request)
                     41: {
                     42:        request->set(request, "action", "check");
                     43:        request->set(request, "title", "Login");
                     44:        request->render(request, "templates/auth/login.cs");
                     45: }
                     46: 
                     47: static void check(private_auth_controller_t *this, fast_request_t *request)
                     48: {
                     49:        char *username, *password;
                     50: 
                     51:        username = request->get_query_data(request, "username");
                     52:        password = request->get_query_data(request, "password");
                     53:        if (username && password &&
                     54:                this->manager->login(this->manager, username, password))
                     55:        {
                     56:                request->redirect(request, "ikesa/list");
                     57:        }
                     58:        else
                     59:        {
                     60:                request->redirect(request, "auth/login");
                     61:        }
                     62: }
                     63: 
                     64: static void logout(private_auth_controller_t *this, fast_request_t *request)
                     65: {
                     66:        this->manager->logout(this->manager);
                     67:        request->redirect(request, "auth/login");
                     68: }
                     69: 
                     70: METHOD(fast_controller_t, get_name, char*,
                     71:        private_auth_controller_t *this)
                     72: {
                     73:        return "auth";
                     74: }
                     75: 
                     76: METHOD(fast_controller_t, handle, void,
                     77:        private_auth_controller_t *this, fast_request_t *request, char *action,
                     78:        char *p2, char *p3, char *p4, char *p5)
                     79: {
                     80:        if (action)
                     81:        {
                     82:                if (streq(action, "login"))
                     83:                {
                     84:                        return login(this, request);
                     85:                }
                     86:                else if (streq(action, "check"))
                     87:                {
                     88:                        return check(this, request);
                     89:                }
                     90:                else if (streq(action, "logout"))
                     91:                {
                     92:                        return logout(this, request);
                     93:                }
                     94:        }
                     95:        request->redirect(request, "auth/login");
                     96: }
                     97: 
                     98: METHOD(fast_controller_t, destroy, void,
                     99:        private_auth_controller_t *this)
                    100: {
                    101:        free(this);
                    102: }
                    103: 
                    104: /*
                    105:  * see header file
                    106:  */
                    107: fast_controller_t *auth_controller_create(fast_context_t *context, void *param)
                    108: {
                    109:        private_auth_controller_t *this;
                    110: 
                    111:        INIT(this,
                    112:                .public = {
                    113:                        .controller = {
                    114:                                .get_name = _get_name,
                    115:                                .handle = _handle,
                    116:                                .destroy = _destroy,
                    117:                        },
                    118:                },
                    119:                .manager = (manager_t*)context,
                    120:        );
                    121: 
                    122:        return &this->public.controller;
                    123: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>