Files @ c318109520cc
Branch filter:

Location: DistRen/src/server/user_mgr.h - annotation

binki
User authentication and some access checking.
/*
  Copyright 2010 Nathan Phillip Brink, Ethan Zonca, Matthew Orlando

  This file is a part of DistRen.

  DistRen is free software: you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  DistRen is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Affero General Public License for more details.

  You should have received a copy of the GNU Affero General Public License
  along with DistRen.  If not, see <http://www.gnu.org/licenses/>.
*/

/*
 * Stores, keeps track of, retrieves information concerning,
 * and backs up to XML DistRen's userdb system
 */

#ifndef _DISTREN_USER_MGR_H
#define _DISTREN_USER_MGR_H

struct user
{
  char *username;
  char *pass;
  int render_power;
  int last_job;
};
typedef struct user *user_t;

struct user_mgr;
typedef struct user_mgr *user_mgr_t;

/**
 * \brief Allocate and initialize a user_mgr.
 *
 * \param userfile The path to where and XML file with user
 *   information may be found and where the users file should be save
 *   to when new users are added.
 * \return The new user_mgr or NULL on error.
 */
user_mgr_t user_mgr_init(const char *userfile);

/**
 * \brief Find a user by username.
 *
 * \param user_mgr The user_mgr...
 * \param username The username to search for.
 * \return The user if it is in user_mgr or NULL.
 */
user_t user_find(user_mgr_t user_mgr, const char *username);

/**
 * \brief Add a user to the user_mgr.
 *
 * \param username The user's username (which is local in scope to this server).
 * \param pass The user's plaintext password (insecurity is sooo much easier ;-) ).
 * \return 0 on success, 1 on failure (attempt to insert duplicate user, etc.).
 */
int user_add(user_mgr_t user_mgr, const char *username, const char *pass);

/**
 * \brief Delete a user.
 *
 * The user handle passed to this function is no longer valid after
 * this function is called.
 *
 * \param user The user's handle as retrieved via user_find().
 * \return 0 on success, 1 on failure (user does not exist, inconsistency, etc.)
 */
int user_delete(user_mgr_t user_mgr, user_t user);

/**
 * \brief Write out the XML file listing all of the users local to this server.
 *
 * \param filename The file to write the userlist to or NULL if you
 *   want to write to the same filename you loaded the usre_mgr from.
 */
int user_mgr_save(user_mgr_t user_mgr, const char *filename);



#endif