/// <summary> /// Adds a new user /// </summary> /// <param name="form">User data</param> /// <returns>success</returns> public bool add(Form_User_Add form) { user newUser = new user(); newUser.username = form["username"].getValue(); newUser.rolesid = long.Parse(form["role"].getValue()); newUser.email = form["email"].getValue(); SHA1Managed sha = new SHA1Managed(); string hash = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(form["password"].getValue()))).Replace("-", String.Empty).ToLower(); newUser.password = hash; newUser.date = DateTime.Now; using (UserDataContext u = new UserDataContext()) { try { u.users.InsertOnSubmit(newUser); u.SubmitChanges(); } catch (Exception e) { CMS.Services.CMS_Services_Message.getInstance().addError(e.Message); return false; } } return true; }
/// <summary> /// Deletes a user with the given id /// </summary> /// <param name="id">user id</param> /// <returns>success</returns> public bool delete(long id) { using (UserDataContext u = new UserDataContext()) { try { u.users.DeleteAllOnSubmit(u.users.Where(x => x.id == id)); u.SubmitChanges(); } catch { return false; } return true; } }
/// <summary> /// Save changes to the given user /// </summary> /// <param name="form">User data</param> /// <param name="edited">Edited user</param> /// <returns>success</returns> public bool save(Form_User_Add form, user edited) { user toSave = new user(); toSave.id = edited.id; toSave.password = edited.password; if (form["password"].getValue() != String.Empty) { SHA1Managed sha = new SHA1Managed(); string hash = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(form["password"].getValue()))).Replace("-", String.Empty).ToLower(); toSave.password = hash; } toSave.rolesid = long.Parse(form["role"].getValue()); toSave.email = form["email"].getValue(); toSave.username = form["username"].getValue(); toSave.date = edited.date; using (UserDataContext u = new UserDataContext()) { u.users.Attach(toSave, edited); try { u.SubmitChanges(); } catch (Exception e) { return false; } } return true; }
/// <summary> /// Returns count of users matching given username and password /// expected count should be 0 or 1 /// </summary> /// <param name="username">Username</param> /// <param name="password">Pasword</param> /// <returns>Amount of users matching given credentials</returns> public int getCountByUsernameAndPassword(string username, string password) { SHA1Managed sha = new SHA1Managed(); string hash = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(password))).Replace("-", String.Empty).ToLower(); using (UserDataContext users = new UserDataContext()) { int authuser = users.users .Where(u => (u.password == hash && u.username == username)) .Select(u => u).Count(); if (authuser < 0 || authuser > 1) { throw new Exception("Unexpected count of users matching given credentials"); } return authuser; } }
/// <summary> /// Gets count of users /// </summary> /// <returns>Count of users</returns> public int getCount() { using (UserDataContext u = new UserDataContext()) { return u.users.Count(); } }
/// <summary> /// Gets a user by the specified username and password /// </summary> /// <param name="username">username</param> /// <param name="password">password</param> /// <returns>user</returns> public user getByUsernameAndPassword(string username, string password) { SHA1Managed sha = new SHA1Managed(); string hash = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(password))).Replace("-", String.Empty).ToLower(); using (UserDataContext users = new UserDataContext()) { try { return users.users .Where(u => (u.password == hash && u.username == username)) .Single(); } catch (Exception) { return null; } } }
/// <summary> /// Returns user identified by the specified ID /// </summary> /// <param name="id">User id</param> /// <returns>User</returns> public user getById(long id) { using (UserDataContext u = new UserDataContext()) { try { var data = u.users .Where(x => x.id == id) .Single(); return data; } catch (Exception) { return null; } } }
/// <summary> /// Gets a list of all users /// </summary> /// <returns>List of users</returns> public List<user> get() { using (UserDataContext u = new UserDataContext()) { return u.users.ToList(); } }