Adds UserManager to sql
Changes the way Warps and Regions are stored A few other minor tweaks
This commit is contained in:
parent
4a25cd612c
commit
cb7033d89c
10 changed files with 154 additions and 430 deletions
|
|
@ -37,7 +37,7 @@ namespace TShockAPI.DB
|
|||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText =
|
||||
"CREATE TABLE IF NOT EXISTS \"Bans\" (\"IP\" VARCHAR(15) NOT NULL UNIQUE , \"Name\" VARCHAR(32) NOT NULL , \"Reason\" VARCHAR(255) NOT NULL );";
|
||||
"CREATE TABLE IF NOT EXISTS 'Bans' ('IP' TEXT UNIQUE , 'Name' TEXT, 'Reason' TEXT);";
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
24
TShockAPI/DB/GroupManager.cs
Normal file
24
TShockAPI/DB/GroupManager.cs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using Community.CsharpSqlite.SQLiteClient;
|
||||
|
||||
namespace TShockAPI.DB
|
||||
{
|
||||
public class GroupManager
|
||||
{
|
||||
private IDbConnection database;
|
||||
|
||||
public GroupManager(IDbConnection db)
|
||||
{
|
||||
database = db;
|
||||
}
|
||||
|
||||
public bool GroupExists(string group)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -43,7 +43,7 @@ namespace TShockAPI.DB
|
|||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText =
|
||||
"CREATE TABLE IF NOT EXISTS \"Regions\" (\"X1\" INTEGER(11) NOT NULL, \"Y1\" INTEGER(11) NOT NULL, \"X2\" INTEGER(11) NOT NULL, \"Y2\" INTEGER(11) NOT NULL, \"RegionName\" VARCHAR(32) NOT NULL, \"WorldID\" VARCHAR(255) NOT NULL, \"UserIds\" VARCHAR(255) NOT NULL, \"Protected\" INTEGER(1));";
|
||||
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' INTEGER(11) NOT NULL, 'Y1' INTEGER(11) NOT NULL, 'X2' INTEGER(11) NOT NULL, 'Y2' INTEGER(11) NOT NULL, 'RegionName' VARCHAR(32) NOT NULL, 'WorldID' VARCHAR(255) NOT NULL, 'UserIds' VARCHAR(255) NOT NULL, 'Protected' INTEGER(1));";
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@ namespace TShockAPI.DB
|
|||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "UPDATE Regions SET Protected='@bool' WHERE RegionName=@name WorldID=@worldid";
|
||||
com.CommandText = "UPDATE Regions SET Protected=@bool WHERE RegionName=@name WorldID=@worldid";
|
||||
com.AddParameter("@name", name);
|
||||
if (state)
|
||||
com.AddParameter("@bool", 1);
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ using System.Collections.Generic;
|
|||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Community.CsharpSqlite.SQLiteClient;
|
||||
|
||||
namespace TShockAPI.DB
|
||||
{
|
||||
|
|
@ -35,9 +36,109 @@ namespace TShockAPI.DB
|
|||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText =
|
||||
"CREATE TABLE IF NOT EXISTS 'Users' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , 'Username' VARCHAR(32) UNIQUE , 'Password' CHAR(32), 'Group' VARCHAR(50));";
|
||||
"CREATE TABLE IF NOT EXISTS 'Users' ('ID' INTEGER PRIMARY KEY, 'Username' TEXT UNIQUE, 'Password' TEXT, 'UserGroup' TEXT, 'IP' TEXT);";
|
||||
com.ExecuteNonQuery();
|
||||
|
||||
com.CommandText = "INSERT INTO Users (UserGroup, IP) VALUES (@group, @ip);";
|
||||
com.AddParameter("@group", "superadmin");
|
||||
com.AddParameter("@ip", "127.0.0.1");
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
public int AddUser(string ip = "" , string name = "", string password = "", string group = "default")
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@name, @password, @group, @ip);";
|
||||
com.AddParameter("@name", name.ToLower());
|
||||
com.AddParameter("@password", Tools.HashPassword(password));
|
||||
|
||||
if(TShock.Groups.GroupExists(group))
|
||||
com.AddParameter("@group", group);
|
||||
else
|
||||
//Return code 2 (Group not exist)
|
||||
return 2;
|
||||
|
||||
com.AddParameter("@ip", ip);
|
||||
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
if (reader.RecordsAffected > 0)
|
||||
//Return code 1 (User added)
|
||||
return 1;
|
||||
else
|
||||
//Return code 0 (Add failed)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (SqliteExecutionException ex)
|
||||
{
|
||||
//Return code 0 (Add failed)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fetches the hashed password and group for a given username
|
||||
/// </summary>
|
||||
/// <param name="username">string username</param>
|
||||
/// <returns>string[] {password, group}</returns>
|
||||
public string[] FetchHashedPasswordAndGroup(string username)
|
||||
{
|
||||
string[] returndata = new string[2];
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
|
||||
com.AddParameter("@name", username.ToLower());
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
returndata[0] = reader.Get<string>("Password");
|
||||
returndata[1] = reader.Get<string>("UserGroup");
|
||||
return returndata;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (SqliteExecutionException ex)
|
||||
{
|
||||
}
|
||||
return returndata;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a Group for a ip from the database
|
||||
/// </summary>
|
||||
/// <param name="ply">string ip</param>
|
||||
public Group GetGroupForIP(string ip)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "SELECT * FROM Users WHERE IP=@ip";
|
||||
com.AddParameter("@ip", ip);
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
string group = reader.Get<string>("UserGroup");
|
||||
return Tools.GetGroup(group);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (SqliteExecutionException ex)
|
||||
{
|
||||
}
|
||||
return Tools.GetGroup("default");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace TShockAPI.DB
|
|||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText =
|
||||
"CREATE TABLE IF NOT EXISTS \"Warps\" (\"X\" INTEGER(11) NOT NULL, \"Y\" INTEGER(11) NOT NULL, \"WarpName\" VARCHAR(32) NOT NULL UNIQUE, \"WorldID\" VARCHAR(255) NOT NULL );";
|
||||
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' INTEGER(11) NOT NULL, 'Y' INTEGER(11) NOT NULL, 'WarpName' TEXT UNIQUE, 'WorldID' TEXT);";
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue