Merge branch 'master' into Long_archivePos
This commit is contained in:
commit
a2c5e0a1f9
@ -1,7 +0,0 @@
|
|||||||
namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|
||||||
{
|
|
||||||
public class Class1
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -17,9 +17,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
public SqlDAO(string info)
|
public SqlDAO(string info)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
Console.WriteLine("Establising Connection...");
|
//Console.WriteLine("Establising Connection...");
|
||||||
_conn = new OdbcConnection(info);
|
_conn = new OdbcConnection(info);
|
||||||
Console.WriteLine("Connection established.");
|
//Console.WriteLine("Connection established.");
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
//_conn = null;
|
//_conn = null;
|
||||||
|
|||||||
@ -4,20 +4,12 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
{
|
{
|
||||||
public class UiPrint
|
public class UiPrint
|
||||||
{
|
{
|
||||||
public void InitialMenu()
|
|
||||||
{
|
|
||||||
// Create intial menu
|
|
||||||
Console.WriteLine("What would you like to access?");
|
|
||||||
int num = 1;
|
|
||||||
Console.WriteLine(num + ".User Management");
|
|
||||||
num += 1;
|
|
||||||
Console.WriteLine(num + ".Logging");
|
|
||||||
}
|
|
||||||
public void UserManagementMenu(string username)
|
public void UserManagementMenu(string username)
|
||||||
{
|
{
|
||||||
// Menu for all UserManagement options
|
// Menu for all UserManagement options
|
||||||
int menu = 0;
|
int menu = 0;
|
||||||
Console.WriteLine($"Welcome {username} to User Management.\n");
|
Console.WriteLine("-------------------------------------\n");
|
||||||
|
Console.WriteLine($"\nWelcome {username} to User Management.\n");
|
||||||
Console.WriteLine("What would you like to do?\n");
|
Console.WriteLine("What would you like to do?\n");
|
||||||
Console.WriteLine(menu + ") To exit User Management.\n");
|
Console.WriteLine(menu + ") To exit User Management.\n");
|
||||||
menu += 1;
|
menu += 1;
|
||||||
@ -31,9 +23,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
menu += 1;
|
menu += 1;
|
||||||
Console.WriteLine(menu + ") Enable an account.\n");
|
Console.WriteLine(menu + ") Enable an account.\n");
|
||||||
menu += 1;
|
menu += 1;
|
||||||
Console.WriteLine(menu + ") View logs.\n");
|
Console.WriteLine(menu + ") View log path.\n");
|
||||||
menu += 1;
|
menu += 1;
|
||||||
Console.WriteLine(menu + ") View archive.\n");
|
Console.WriteLine(menu + ") View archive path.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
/*using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -14,3 +14,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
/*using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -14,3 +14,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging.Contracts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
/*using System;
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.Logging
|
namespace TeamHobby.HobbyProjectGenerator.Logging
|
||||||
{
|
{
|
||||||
@ -21,4 +21,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}*/
|
||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
/*using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -18,3 +18,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging.Implementations
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@ -20,4 +20,4 @@
|
|||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|||||||
@ -55,4 +55,4 @@
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
/*using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -51,4 +51,3 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
/*using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -42,3 +42,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@ -1,10 +0,0 @@
|
|||||||
namespace TeamHobby.HobbyProjectGenerator.Models
|
|
||||||
{
|
|
||||||
public class Credentials
|
|
||||||
{
|
|
||||||
public string userName { get; set; }
|
|
||||||
|
|
||||||
// Syntactic sugar
|
|
||||||
public string Password { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -29,53 +29,74 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public bool EditUserRecord(UserAccount newUser, string CreatedBy, IDataSource<string> dbSource)
|
public bool EditUserRecord(UserAccount editUser, string CreatedBy, IDataSource<string> dbSource)
|
||||||
{
|
{
|
||||||
/* // Insert into users table
|
try
|
||||||
string sqlUser = $"UPDATE hobby.roles r SET r.Role = 'regular',r.CreatedBy = 'colin'WHERE r.RoleID = 5; ";
|
|
||||||
|
|
||||||
Object insertNewUser = dbSource.WriteData(sqlUser);
|
|
||||||
// Insert into users table
|
|
||||||
string sqlRoles = $"INSERT INTO roles (Role, CreatedBy, CreatedDate) " +
|
|
||||||
$"VALUES ('{newUser.NewRole}', '{CreatedBy}', NOW());";
|
|
||||||
Object insertNewRole = dbSource.WriteData(sqlUser);
|
|
||||||
// Create string for confirming user account
|
|
||||||
string confirmUser = $"Select * from users where username = {newUser.NewUserName} " +
|
|
||||||
$"and password = {newUser.NewPassword};";
|
|
||||||
Object conUser = dbSource.ReadData(confirmUser);
|
|
||||||
|
|
||||||
//Console.WriteLine("type of Reesult:" + confirmAdmin.GetType());
|
|
||||||
OdbcDataReader reader = null;
|
|
||||||
|
|
||||||
if (conUser.GetType() == typeof(OdbcDataReader))
|
|
||||||
{
|
{
|
||||||
reader = (OdbcDataReader)conUser;
|
// Insert into users table
|
||||||
}
|
string sqlUser = $"UPDATE users t SET t.Password = '{editUser.password}', " +
|
||||||
|
$"t.Role = '{editUser.role}',t.Email = '{editUser.email}' " +
|
||||||
|
$"WHERE t.UserName = '{editUser.username}';";
|
||||||
|
|
||||||
// Read Sql query results
|
bool updateNewUser = dbSource.UpdateData(sqlUser);
|
||||||
while (reader.Read())
|
return updateNewUser;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(reader.GetString(0));
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
public bool DeleteUserRecord(UserAccount deleteUser, string CreatedBy, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Insert into users table
|
||||||
|
string sqlUser = $"DELETE from users WHERE UserName = '{deleteUser.username}' " +
|
||||||
|
$"and Password = '{deleteUser.password}';";
|
||||||
|
|
||||||
SqlDAO sqlDS = (SqlDAO)dbSource;
|
bool deleteNewUser = dbSource.DeleteData(sqlUser);
|
||||||
Console.WriteLine("");
|
return deleteNewUser;
|
||||||
|
|
||||||
// Closing the connection
|
}
|
||||||
sqlDS.getConnection().Close();*/
|
catch (Exception ex)
|
||||||
return true;
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public bool DeleteUserRecord(UserAccount newUser, IDataSource<string> dbSource)
|
public bool DisableUser(UserAccount disableUser, string CreatedBy, IDataSource<string> dbSource)
|
||||||
{
|
{
|
||||||
return true;
|
try
|
||||||
|
{
|
||||||
|
// Insert into users table
|
||||||
|
string sqlUser = $"UPDATE users u SET u.IsActive = 0 WHERE u.UserName = '{disableUser.username}'" +
|
||||||
|
$"and u.Role = '{disableUser.role}';";
|
||||||
|
|
||||||
|
bool disableNewUser = dbSource.UpdateData(sqlUser);
|
||||||
|
return disableNewUser;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public bool DisableUser(UserAccount newUser, IDataSource<string> dbSource)
|
public bool EnableUser(UserAccount enableUser, string CreatedBy, IDataSource<string> dbSource)
|
||||||
{
|
{
|
||||||
return true;
|
try
|
||||||
}
|
{
|
||||||
public bool EnableUser(UserAccount newUser, IDataSource<string> dbSource)
|
// Insert into users table
|
||||||
{
|
string sqlUser = $"UPDATE users u SET u.IsActive = 1 WHERE u.UserName = '{enableUser.username}'" +
|
||||||
return true;
|
$"and u.Role = '{enableUser.role}';";
|
||||||
|
|
||||||
|
bool disableNewUser = dbSource.UpdateData(sqlUser);
|
||||||
|
return disableNewUser;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -171,10 +171,11 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
// Closing the connection
|
// Closing the connection
|
||||||
sqlDS.getConnection().Close();
|
sqlDS.GetConnection().Close();
|
||||||
|
|
||||||
if (checkSql == "Admin")
|
if (checkSql == "Admin")
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("-- Logged in successfully.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -204,12 +205,12 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
AccountService accountService = new AccountService();
|
AccountService accountService = new AccountService();
|
||||||
// Create credentials object for new inptus
|
// Create credentials object for new inptus
|
||||||
GetCredentials newCredentials = new GetCredentials();
|
GetCredentials newCredentials = new GetCredentials();
|
||||||
// Print User Management menu
|
|
||||||
ui.UserManagementMenu(user.username);
|
|
||||||
// Create bool object for menu loop
|
// Create bool object for menu loop
|
||||||
bool menuLoop = true;
|
bool menuLoop = true;
|
||||||
// Create loop for menu
|
// Create loop for menu
|
||||||
while (menuLoop is true) {
|
while (menuLoop is true) {
|
||||||
|
// Print User Management menu
|
||||||
|
ui.UserManagementMenu(user.username);
|
||||||
// Get user choice
|
// Get user choice
|
||||||
int menuChoice = Convert.ToInt32(Console.ReadLine());
|
int menuChoice = Convert.ToInt32(Console.ReadLine());
|
||||||
// Complete the appropriate action
|
// Complete the appropriate action
|
||||||
@ -217,38 +218,91 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
{
|
{
|
||||||
// Exit menu
|
// Exit menu
|
||||||
case 0:
|
case 0:
|
||||||
return "Exiting UserManagement.\n";
|
return "Back to Login";
|
||||||
break;
|
|
||||||
// Create account
|
// Create account
|
||||||
case 1:
|
case 1:
|
||||||
|
// Get all credentials and create newUser
|
||||||
UserAccount newUser = new UserAccount(newCredentials.GetUserName(),
|
UserAccount newUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
newCredentials.GetPassword(), newCredentials.GetEmail(),
|
newCredentials.ConfirmPassword(), newCredentials.GetEmail(),
|
||||||
newCredentials.GetRole(), DateTime.UtcNow);
|
newCredentials.GetRole(), DateTime.UtcNow);
|
||||||
accountService.CreateUserRecord(newUser,user.username, dbSource);
|
bool accountValid = accountService.CreateUserRecord(newUser, user.username, dbSource);
|
||||||
break;
|
if (accountValid is true)
|
||||||
|
{
|
||||||
|
Console.WriteLine("\nAccount created Successfully");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Database Timed out";
|
||||||
|
}
|
||||||
// Edit account
|
// Edit account
|
||||||
case 2:
|
case 2:
|
||||||
/* UserAccount newEditUser = new UserAccount(newCredentials.GetUserName(),
|
// State what account is being edited
|
||||||
newCredentials.GetPassword(), DateTime.UtcNow);
|
string userName = newCredentials.GetUserName();
|
||||||
accountService.EditUserRecord(newEditUser, dbSource);*/
|
string userRole = newCredentials.GetRole();
|
||||||
|
|
||||||
|
// Notify the user of what can be edited
|
||||||
|
Console.WriteLine($"\n****The following information will be used to update {userName}");
|
||||||
|
|
||||||
|
// Get updated parameters
|
||||||
|
UserAccount newEditUser = new UserAccount(userName,
|
||||||
|
newCredentials.GetPassword(), newCredentials.GetEmail(),
|
||||||
|
newCredentials.GetRole(), DateTime.UtcNow);
|
||||||
|
bool editValid = accountService.EditUserRecord(newEditUser, user.username, dbSource);
|
||||||
|
if (editValid is true)
|
||||||
|
{
|
||||||
|
Console.WriteLine("\nAccount updated Successfully");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Database Timed out";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// Delete account
|
// Delete account
|
||||||
case 3:
|
case 3:
|
||||||
UserAccount newDeleteUser = new UserAccount(newCredentials.GetUserName(),
|
UserAccount newDeleteUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
newCredentials.GetPassword(), DateTime.UtcNow);
|
newCredentials.GetPassword(), DateTime.UtcNow);
|
||||||
accountService.DeleteUserRecord(newDeleteUser, dbSource);
|
bool deleteValid = accountService.DeleteUserRecord(newDeleteUser, user.username , dbSource);
|
||||||
|
if (deleteValid is true)
|
||||||
|
{
|
||||||
|
Console.WriteLine("\nAccount deleted Successfully");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "User does not exist";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// Disable account
|
// Disable account
|
||||||
case 4:
|
case 4:
|
||||||
UserAccount newDisableUser = new UserAccount(newCredentials.GetUserName(),
|
UserAccount newDisableUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
newCredentials.GetPassword(), DateTime.UtcNow);
|
newCredentials.GetRole());
|
||||||
accountService.DisableUser(newDisableUser, dbSource);
|
bool disableValid = accountService.DisableUser(newDisableUser, user.username , dbSource);
|
||||||
|
if (disableValid is true)
|
||||||
|
{
|
||||||
|
Console.WriteLine("\nAccount disabled Successfully");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "User does not exist";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// Enable account
|
// Enable account
|
||||||
case 5:
|
case 5:
|
||||||
UserAccount newEnableUser = new UserAccount(newCredentials.GetUserName(),
|
UserAccount newEnableUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
newCredentials.GetPassword(), DateTime.UtcNow);
|
newCredentials.GetRole());
|
||||||
accountService.EnableUser(newEnableUser, dbSource);
|
bool enableValid = accountService.EnableUser(newEnableUser, user.username , dbSource);
|
||||||
|
if (enableValid is true)
|
||||||
|
{
|
||||||
|
Console.WriteLine("\nAccount enabled Successfully");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "User does not exist";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// View logs
|
// View logs
|
||||||
case 6:
|
case 6:
|
||||||
@ -261,9 +315,7 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return "Back to Login";
|
||||||
string dbAction = user.username;
|
|
||||||
return dbAction;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
||||||
{
|
{ // Class for getting user credentials
|
||||||
public class GetCredentials
|
public class GetCredentials
|
||||||
{
|
{
|
||||||
public string? GetUserName()
|
public string? GetUserName()
|
||||||
@ -20,11 +20,26 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
string? userPassword = Console.ReadLine();
|
string? userPassword = Console.ReadLine();
|
||||||
return userPassword;
|
return userPassword;
|
||||||
}
|
}
|
||||||
/*public string ConfirmPassword()
|
public string ConfirmPassword()
|
||||||
{
|
{
|
||||||
Console.WriteLine();
|
while (true)
|
||||||
string confirmPassword = newUser.NewPassword;
|
{
|
||||||
}*/
|
Console.WriteLine("Please enter a password:");
|
||||||
|
string? userPassword = Console.ReadLine();
|
||||||
|
// Confirm Password
|
||||||
|
Console.WriteLine("Please re-enter the password:");
|
||||||
|
string checkPsswd = Console.ReadLine();
|
||||||
|
// Check if passwords match
|
||||||
|
if (userPassword == checkPsswd)
|
||||||
|
{
|
||||||
|
return userPassword;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Passwords do not match.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public string GetEmail()
|
public string GetEmail()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Please enter an email:");
|
Console.WriteLine("Please enter an email:");
|
||||||
@ -52,6 +67,12 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
_password = pwd;
|
_password = pwd;
|
||||||
_Time = TimeStamp;
|
_Time = TimeStamp;
|
||||||
}
|
}
|
||||||
|
public UserAccount(string un, string role)
|
||||||
|
{
|
||||||
|
_userName = un;
|
||||||
|
_Role = role;
|
||||||
|
_Time = DateTime.UtcNow;
|
||||||
|
}
|
||||||
public UserAccount(string newUN, string newPWD, string Email, string role, DateTime newTime)
|
public UserAccount(string newUN, string newPWD, string Email, string role, DateTime newTime)
|
||||||
{
|
{
|
||||||
_userName = newUN;
|
_userName = newUN;
|
||||||
|
|||||||
@ -4,6 +4,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
VisualStudioVersion = 17.0.31919.166
|
VisualStudioVersion = 17.0.31919.166
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{AA48A66C-FA36-4AF9-A782-CEC22838EB8F} = {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}
|
||||||
|
{2E7193B8-86B6-48DA-9671-CD84615A5F5D} = {2E7193B8-86B6-48DA-9671-CD84615A5F5D}
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}"
|
||||||
EndProject
|
EndProject
|
||||||
@ -11,18 +15,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "main", "..\main\main.csproj
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Archive", "..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj", "{B88ED0D9-72E2-4245-BD8F-856FF42E500C}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Archive", "..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj", "{B88ED0D9-72E2-4245-BD8F-856FF42E500C}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.Main", "..\TeamHobby.Main\TeamHobby.Main.csproj", "{ED126EFB-B337-42F9-BE4B-65A5AE90503B}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging", "..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj", "{C0494115-838E-43A3-8896-133E5D1E874A}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging.Tests", "..\TeamHobby.HobbyProjectGenerator.Logging.Tests\TeamHobby.HobbyProjectGenerator.Logging.Tests.csproj", "{CA8D11CF-807C-4C90-A529-0371F73518F6}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging.Tests", "..\TeamHobby.HobbyProjectGenerator.Logging.Tests\TeamHobby.HobbyProjectGenerator.Logging.Tests.csproj", "{CA8D11CF-807C-4C90-A529-0371F73518F6}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.ArchiveTests", "..\TeamHobby.HobbyProjectGenerator.ArchiveTests\TeamHobby.HobbyProjectGenerator.ArchiveTests.csproj", "{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.ArchiveTests", "..\TeamHobby.HobbyProjectGenerator.ArchiveTests\TeamHobby.HobbyProjectGenerator.ArchiveTests.csproj", "{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.xTests", "TeamHobby.UserManagement.xTests\TeamHobby.UserManagement.xTests.csproj", "{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D29D9225-3748-4067-AF07-E677A525EF39}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
TeamHobby.HobbyProjectGenerator.csproj = TeamHobby.HobbyProjectGenerator.csproj
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@ -67,6 +74,13 @@ Global
|
|||||||
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.4.1" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="3.1.0">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" />
|
||||||
|
<ProjectReference Include="..\..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
using System;
|
||||||
|
using Xunit;
|
||||||
|
using Xunit.Abstractions;
|
||||||
|
using System.Threading;
|
||||||
|
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
||||||
|
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
||||||
|
|
||||||
|
namespace TeamHobby.UserManagement.xTests
|
||||||
|
{
|
||||||
|
public class UnitTest1
|
||||||
|
{
|
||||||
|
|
||||||
|
ITestOutputHelper output;
|
||||||
|
public UnitTest1(ITestOutputHelper output)
|
||||||
|
{
|
||||||
|
this.output = output;
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public void SingleOperationinFiveSec()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
DateTime sTime = DateTime.Now;
|
||||||
|
var TestAcc = new UserAccount("newUser", "4567", "email@a.com", "regular", sTime);
|
||||||
|
var serviceTest = new AccountService();
|
||||||
|
string dbType = "sql";
|
||||||
|
RDSFactory dbFactory = new RDSFactory();
|
||||||
|
|
||||||
|
// Testing Data Access Layer
|
||||||
|
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
||||||
|
"TCPIP=1;" +
|
||||||
|
"SERVER=localhost;" +
|
||||||
|
"DATABASE=hobby;" +
|
||||||
|
"UID=root;" +
|
||||||
|
"PASSWORD=hobby;" +
|
||||||
|
"OPTION=3";
|
||||||
|
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
// Create a file
|
||||||
|
serviceTest.CreateUserRecord(TestAcc, "Rifat", datasource);
|
||||||
|
DateTime eTime = DateTime.Now;
|
||||||
|
TimeSpan timeDiff = (eTime - sTime);
|
||||||
|
var sec = timeDiff.TotalSeconds;
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
if (sec > 5)
|
||||||
|
{
|
||||||
|
output.WriteLine("Single Operation was unsuccessful");
|
||||||
|
Assert.False(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.True(true);
|
||||||
|
output.WriteLine("Single Operation was successful");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void BulkOperationforSixty()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
DateTime sTime = DateTime.Now;
|
||||||
|
|
||||||
|
var serviceTest = new AccountService();
|
||||||
|
string dbType = "sql";
|
||||||
|
RDSFactory dbFactory = new RDSFactory();
|
||||||
|
|
||||||
|
|
||||||
|
// Testing Data Access Layer
|
||||||
|
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
||||||
|
"TCPIP=1;" +
|
||||||
|
"SERVER=localhost;" +
|
||||||
|
"DATABASE=hobby;" +
|
||||||
|
"UID=root;" +
|
||||||
|
"PASSWORD=hobby;" +
|
||||||
|
"OPTION=3";
|
||||||
|
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
// Create a file
|
||||||
|
for (int i = 0; i < 10000; i++)
|
||||||
|
{
|
||||||
|
var TestAcc = new UserAccount("newUser" + $"{i}", "4567", $"email{i}@a.com", "regular", sTime);
|
||||||
|
serviceTest.CreateUserRecord(TestAcc, "Rifat", datasource);
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime eTime = DateTime.Now;
|
||||||
|
TimeSpan timeDiff = (eTime - sTime);
|
||||||
|
var sec = timeDiff.TotalSeconds;
|
||||||
|
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
if (sec > 60)
|
||||||
|
{
|
||||||
|
output.WriteLine("Bulk Operation was unsuccessful");
|
||||||
|
Assert.False(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.True(true);
|
||||||
|
output.WriteLine("Bulk Operation was successful");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,28 +2,10 @@
|
|||||||
using System.Data.Odbc;
|
using System.Data.Odbc;
|
||||||
using TeamHobby.HobbyProjectGenerator.Archive;
|
using TeamHobby.HobbyProjectGenerator.Archive;
|
||||||
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
||||||
using TeamHobby.HobbyProjectGenerator.Logging;
|
|
||||||
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.Main
|
namespace TeamHobby.HobbyProjectGenerator.Main
|
||||||
{
|
{
|
||||||
|
|
||||||
public class GetCredentials
|
|
||||||
{
|
|
||||||
|
|
||||||
public string? GetUserName()
|
|
||||||
{
|
|
||||||
Console.WriteLine("Please enter a username:");
|
|
||||||
string? userName = Console.ReadLine();
|
|
||||||
return userName;
|
|
||||||
}
|
|
||||||
public string? GetPassword()
|
|
||||||
{
|
|
||||||
Console.WriteLine("Please enter " +
|
|
||||||
"a password:");
|
|
||||||
string? userPassword = Console.ReadLine();
|
|
||||||
return userPassword;
|
|
||||||
}
|
|
||||||
public class Controller
|
public class Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -37,102 +19,85 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
// Change terminal height
|
// Change terminal height
|
||||||
Console.WindowHeight = 40;
|
Console.WindowHeight = 40;
|
||||||
|
|
||||||
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
||||||
|
|
||||||
// Creating the Factory class
|
// Creating the Factory class
|
||||||
// Logger log = new Logger();
|
// Logger log = new Logger();
|
||||||
//Logger.PrintTest();
|
//Logger.PrintTest();
|
||||||
//GetCredentials credentials = new GetCredentials();
|
|
||||||
//string? username = credentials.GetUserName();
|
|
||||||
//string? password = credentials.GetPassword();
|
|
||||||
// Console customization
|
|
||||||
// Change the look of the console
|
|
||||||
Console.Title = "HobbyProjectGenerator";
|
|
||||||
// Change console text color
|
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
// Change terminal height
|
|
||||||
Console.WindowHeight = 40;
|
|
||||||
//Console.WriteLine(value: $"username is {username}\npassword is {password}");
|
|
||||||
|
|
||||||
// Creating the Factory class
|
// Loop login terminal
|
||||||
// Creating the Factory class
|
bool mainMenu = true;
|
||||||
|
|
||||||
string dbType = "sql";
|
// Loop Admin login
|
||||||
RDSFactory dbFactory = new RDSFactory();
|
while (mainMenu is true)
|
||||||
|
|
||||||
// Testing Data Access Layer
|
|
||||||
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
|
||||||
"TCPIP=1;" +
|
|
||||||
"SERVER=localhost;" +
|
|
||||||
"DATABASE=hobby;" +
|
|
||||||
"UID=root;" +
|
|
||||||
"PASSWORD=Teamhobby;" +
|
|
||||||
"OPTION=3";
|
|
||||||
IDataSource<string> datasource = factory.getDataSource(dbType, dbInfo);
|
|
||||||
"PORT=3306;";
|
|
||||||
|
|
||||||
|
|
||||||
"OPTION=3";
|
|
||||||
|
|
||||||
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
|
|
||||||
// Create manager class from UserManagement
|
|
||||||
SystemAccountManager manager = new SystemAccountManager();
|
|
||||||
|
|
||||||
// Admin Sign in
|
|
||||||
GetCredentials credentials = new GetCredentials();
|
|
||||||
string? username = credentials.GetUserName();
|
|
||||||
string? password = credentials.GetPassword();
|
|
||||||
|
|
||||||
// Get time of login attempt
|
|
||||||
DateTime TimeStamp = DateTime.UtcNow;
|
|
||||||
|
|
||||||
// Create UserAccount class
|
|
||||||
UserAccount user = new UserAccount(username, password, TimeStamp);
|
|
||||||
|
|
||||||
Console.Write(manager.CreateUserRecord(user, datasource));
|
|
||||||
|
|
||||||
//Console.WriteLine(value: $"Welcome {username}\n");
|
|
||||||
|
|
||||||
/* string sqlQuery = "Select * from log;";
|
|
||||||
Object result = datasource.ReadData(sqlQuery);
|
|
||||||
Console.WriteLine("type of Result: " + result.GetType());
|
|
||||||
OdbcDataReader reader = null;
|
|
||||||
|
|
||||||
if (result.GetType() == typeof(OdbcDataReader))
|
|
||||||
{
|
{
|
||||||
reader = (OdbcDataReader)result;
|
|
||||||
|
|
||||||
}
|
// Admin Sign in
|
||||||
// [Logname, loglevel, date, time, ...]
|
GetCredentials credentials = new GetCredentials();
|
||||||
|
Console.WriteLine("\nPlease Enter Admin Credentials " +
|
||||||
|
"or enter 0 to exit the machine\n");
|
||||||
|
string? username = credentials.GetUserName();
|
||||||
|
//int menuExit = Convert.ToInt32(username);
|
||||||
|
// Exit Infinite Menu
|
||||||
|
if (username == "0")
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
string? password = credentials.GetPassword();
|
||||||
|
|
||||||
Console.WriteLine("Reading from the database");
|
// Get time of login attempt
|
||||||
while (reader.Read())
|
DateTime TimeStamp = DateTime.UtcNow;
|
||||||
{
|
|
||||||
Console.WriteLine("Date={0} {1} {2} {3} {4} {5}", reader[0], reader[1], reader[2], reader[3], reader[4], reader[5]);
|
|
||||||
}
|
|
||||||
SqlDAO sqlDS = (SqlDAO)datasource;
|
|
||||||
Console.WriteLine("");
|
|
||||||
|
|
||||||
// Closing the connection
|
// String for checking query return type
|
||||||
sqlDS.GetConnection().Close();
|
string dbType = "sql";
|
||||||
|
// Creating the Factory class
|
||||||
|
RDSFactory dbFactory = new RDSFactory();
|
||||||
|
|
||||||
// While loop to keep this running forever with UserManagement
|
// Testing Data Access Layer
|
||||||
//Testing archive Manager
|
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
||||||
//while (true)
|
"TCPIP=1;" +
|
||||||
//{
|
"SERVER=localhost;" +
|
||||||
//string currentDate = DateTime.Now.ToString("dd");
|
"DATABASE=hobby;" +
|
||||||
//string currentTime = DateTime.Now.ToString("T");
|
"UID=root;" +
|
||||||
//string activateDate = "01";
|
"PASSWORD=Teamhobby;" +
|
||||||
//string activateTime = "00:00:00 AM";
|
"OPTION=3";
|
||||||
//Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
|
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
|
||||||
//if (String.Equals(currentDate, activateDate) && String.Equals(currentTime, activateTime))
|
|
||||||
|
// While loop to keep this running forever with UserManagement
|
||||||
|
// Testing archive Manager
|
||||||
|
//while (true)
|
||||||
//{
|
//{
|
||||||
//ArchiveManager archive = new ArchiveManager(datasource);
|
string currentDate = DateTime.Now.ToString("dd");
|
||||||
//archive.Controller();
|
string currentTime = DateTime.Now.ToString("T");
|
||||||
|
//Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
|
||||||
|
if (String.Equals(currentDate, "1") && String.Equals(currentTime, "00:00:00 AM"))
|
||||||
|
{
|
||||||
|
ArchiveManager archive = new ArchiveManager(datasource);
|
||||||
|
archive.Controller();
|
||||||
|
}
|
||||||
//}
|
//}
|
||||||
//}
|
|
||||||
|
|
||||||
|
// Create manager class from UserManagement
|
||||||
|
SystemAccountManager manager = new SystemAccountManager();
|
||||||
|
|
||||||
|
// Create UserAccount class
|
||||||
|
UserAccount user = new UserAccount(username, password, TimeStamp);
|
||||||
|
// Call user object and wait for return string
|
||||||
|
string isLogin = manager.CreateUserRecord(user, datasource);
|
||||||
|
|
||||||
|
// If login is not incorrect and user is returning to login menu
|
||||||
|
if (isLogin != "Access Denied: Unauthorized\n")
|
||||||
|
{
|
||||||
|
Console.WriteLine("Returning to login...\n");
|
||||||
|
Console.WriteLine("-------------------------------------\n");
|
||||||
|
}
|
||||||
|
// If login is incorrect
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("******Access Denied: Unauthorized******");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//Creating the folder Archive
|
//Creating the folder Archive
|
||||||
//Console.WriteLine("Creating a new folder ...");
|
//Console.WriteLine("Creating a new folder ...");
|
||||||
@ -163,8 +128,6 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
//sqlDS.RemoveEntries();
|
//sqlDS.RemoveEntries();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 2.Inserting Data into the database:
|
// 2.Inserting Data into the database:
|
||||||
//string sqlWrite = "INSERT into log(lvname, catname, userop, logmessage) values " +
|
//string sqlWrite = "INSERT into log(lvname, catname, userop, logmessage) values " +
|
||||||
// "('Info', 'View', 'Testing DAL stuffs', 'new DAL method tested');";
|
// "('Info', 'View', 'Testing DAL stuffs', 'new DAL method tested');";
|
||||||
@ -178,86 +141,9 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
//Console.WriteLine("Writing to the database... ");
|
//Console.WriteLine("Writing to the database... ");
|
||||||
//datasource.WriteData(sqlRemove);
|
//datasource.WriteData(sqlRemove);
|
||||||
//Console.WriteLine("Writing completed. ");
|
//Console.WriteLine("Writing completed. ");
|
||||||
|
|
||||||
/* bool MainMenu = true;
|
|
||||||
|
|
||||||
// Set up menu loop
|
|
||||||
while (MainMenu == true)
|
|
||||||
{
|
|
||||||
// Console customization
|
|
||||||
// Change the look of the console
|
|
||||||
Console.Title = "HobbyProjectGenerator";
|
|
||||||
// Change console text color
|
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
// Change terminal height
|
|
||||||
Console.WindowHeight = 40;
|
|
||||||
|
|
||||||
|
|
||||||
// Create class objects
|
|
||||||
UiPrint menu = new UiPrint();
|
|
||||||
|
|
||||||
|
|
||||||
// Print main menu
|
|
||||||
menu.InitialMenu();
|
|
||||||
|
|
||||||
// Set up try-catch for invalid inputs
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Get user choice
|
|
||||||
string initialChoice = Console.ReadLine();
|
|
||||||
// Convert to integer
|
|
||||||
int Choice = Convert.ToInt32(initialChoice);
|
|
||||||
|
|
||||||
switch (Choice)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
MainMenu = false;
|
|
||||||
break;
|
|
||||||
// Create a new account
|
|
||||||
case 1:
|
|
||||||
user.newUser();
|
|
||||||
break;
|
|
||||||
// Access Admin features
|
|
||||||
case 2:
|
|
||||||
// Ask for Admin login credentials
|
|
||||||
Console.WriteLine("Please enter a username:");
|
|
||||||
string AdminUser = Console.ReadLine();
|
|
||||||
Console.WriteLine("Please enter the password for" + AdminUser);
|
|
||||||
string AdminPsswrd = Console.ReadLine();
|
|
||||||
|
|
||||||
// Check if the username and password match a record within the administrators
|
|
||||||
|
|
||||||
|
|
||||||
// Show new administrator menu
|
|
||||||
int AdminNum = 0;
|
|
||||||
Console.WriteLine("Welcome" + AdminUser);
|
|
||||||
Console.WriteLine("What would you like to do?");
|
|
||||||
Console.WriteLine("1.View normal user records.");
|
|
||||||
Console.WriteLine("2.View Administrator user records.");
|
|
||||||
Console.WriteLine("3.View log files.");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Console.WriteLine("Invalid choice, please enter a valid number.");
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Catch invalid keys such as spamming enter
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
MainMenu = false;
|
|
||||||
};*/
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,134 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.Main
|
|
||||||
{
|
|
||||||
public class MainMenu
|
|
||||||
{
|
|
||||||
/*static void Main(string[] args)
|
|
||||||
{
|
|
||||||
/* ExampleDAO z = new ExampleDAO();
|
|
||||||
z.UserData("Tomato");
|
|
||||||
Console.Read();*/
|
|
||||||
/*bool menu = true;
|
|
||||||
|
|
||||||
// Set up menu loop
|
|
||||||
while (menu == true)
|
|
||||||
{
|
|
||||||
// Console customization
|
|
||||||
// Change the look of the console
|
|
||||||
Console.Title = "HobbyProjectGenerator";
|
|
||||||
// Change console text color
|
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
// Change terminal height
|
|
||||||
Console.WindowHeight = 40;
|
|
||||||
|
|
||||||
|
|
||||||
// Create intial menu
|
|
||||||
Console.WriteLine("What would you like to do?");
|
|
||||||
int num = 1;
|
|
||||||
Console.WriteLine(num + ".Create a new user account.");
|
|
||||||
num += 1;
|
|
||||||
Console.WriteLine(num + ".Acess Admin Features.");
|
|
||||||
|
|
||||||
// Set up try-catch for invalid inputs
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Get user choice
|
|
||||||
string initialChoice = Console.ReadLine();
|
|
||||||
// Convert to integer
|
|
||||||
int Choice = Convert.ToInt32(initialChoice);
|
|
||||||
|
|
||||||
switch (Choice)
|
|
||||||
{
|
|
||||||
// Create a new account
|
|
||||||
case 1:
|
|
||||||
// Get username
|
|
||||||
Console.WriteLine("Please enter a username:");
|
|
||||||
string userName = Console.ReadLine();
|
|
||||||
|
|
||||||
// Get Password
|
|
||||||
Console.WriteLine("Please enter a password:");
|
|
||||||
string userPassword = Console.ReadLine();
|
|
||||||
|
|
||||||
// Create bool value for password confirm loop
|
|
||||||
bool conPsswrd = true;
|
|
||||||
// Loop until password is confirmed
|
|
||||||
while (conPsswrd == true)
|
|
||||||
{
|
|
||||||
// Confirm Password
|
|
||||||
Console.WriteLine("Please re-enter the password:");
|
|
||||||
string checkPsswd = Console.ReadLine();
|
|
||||||
// Check if passwords match
|
|
||||||
if (userPassword == checkPsswd)
|
|
||||||
{
|
|
||||||
// Get Security question for password reset
|
|
||||||
Console.WriteLine("Please enter a security question.\n" +
|
|
||||||
"(EX: What is your favorite food?");
|
|
||||||
string SecQuest = Console.ReadLine();
|
|
||||||
// Get Security question answer
|
|
||||||
Console.WriteLine("Please enter the answer for your security question:");
|
|
||||||
String SecAnswer = Console.ReadLine();
|
|
||||||
|
|
||||||
// Call user manager method to create the new user
|
|
||||||
//int userCreateConfirm = new CreateUser(userName,userPassword,SecQuest,SecAnswer);
|
|
||||||
|
|
||||||
// Check if user creation was successful
|
|
||||||
/* if (userCreateConfirm = 1)
|
|
||||||
{
|
|
||||||
|
|
||||||
// Confirm to user that the account has been created
|
|
||||||
Console.WriteLine("Account created succesfully with the username of" + userName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
}*/
|
|
||||||
/* conPsswrd = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("Passwords did not match, please try again.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
// Access Admin features
|
|
||||||
case 2:
|
|
||||||
// Ask for Admin login credentials
|
|
||||||
Console.WriteLine("Please enter a username:");
|
|
||||||
string AdminUser = Console.ReadLine();
|
|
||||||
Console.WriteLine("Please enter the password for" + AdminUser);
|
|
||||||
string AdminPsswrd = Console.ReadLine();
|
|
||||||
|
|
||||||
// Check if the username and password match a record within the administrators
|
|
||||||
|
|
||||||
|
|
||||||
// Show new administrator menu
|
|
||||||
int AdminNum = 0;
|
|
||||||
Console.WriteLine("Welcome" + AdminUser);
|
|
||||||
Console.WriteLine("What would you like to do?");
|
|
||||||
Console.WriteLine("1.View normal user records.");
|
|
||||||
Console.WriteLine("2.View Administrator user records.");
|
|
||||||
Console.WriteLine("3.");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("");
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
menu = false;
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Catch invalid keys such as spamming enter
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
menu = false;
|
|
||||||
};
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,50 +0,0 @@
|
|||||||
using Microsoft.Data.SqlClient;
|
|
||||||
using TeamHobby.HobbyProjectGenerator.Models;
|
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.DAL
|
|
||||||
{
|
|
||||||
public class SqlDAO
|
|
||||||
{
|
|
||||||
public IList<Credentials> GetUserData(string username)
|
|
||||||
{
|
|
||||||
// Sql server connection string, needs to be changed accordingly to connect
|
|
||||||
var connString = "server=localhost;userid=root;password=Plop20;database=users"; // Using @" " makes the string literal
|
|
||||||
|
|
||||||
// ADO.NET - ODBC
|
|
||||||
using (var conn = new SqlConnection(connString))
|
|
||||||
{
|
|
||||||
// More complex sql commands are done in this method instead
|
|
||||||
var sql = "Select * from roles";
|
|
||||||
using (var command = new SqlCommand(sql, conn))
|
|
||||||
{
|
|
||||||
// Get the results from the query
|
|
||||||
SqlDataReader r = command.ExecuteReader();
|
|
||||||
|
|
||||||
// If you wanted to get a singular value back such as a count of a certain item
|
|
||||||
//command.ExecuteScalar();
|
|
||||||
|
|
||||||
// To execute something that doesn't expect results to come back
|
|
||||||
// Use this method instead, IE. Update command
|
|
||||||
//command.ExecuteNonQuery();
|
|
||||||
|
|
||||||
// Read data from query
|
|
||||||
while (r.Read())
|
|
||||||
{
|
|
||||||
Console.WriteLine(r.ToString());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*// this is meant for specific basic sql commands
|
|
||||||
using (var adapter = new SqlDataAdapter())
|
|
||||||
{
|
|
||||||
adapter.UpdateCommand
|
|
||||||
adapter.DeleteCommand
|
|
||||||
adapter.InsertCommand
|
|
||||||
adapter.SelectCommand
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -16,8 +16,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj" />
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" />
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj" />
|
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj" />
|
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@ -1,26 +1,5 @@
|
|||||||
create table users
|
|
||||||
(
|
|
||||||
UserName varchar(50) charset utf8mb3 not null,
|
|
||||||
Password varchar(50) charset utf8mb3 not null,
|
|
||||||
Role varchar(50) charset utf8mb3 not null,
|
|
||||||
IsActive int default 1 not null,
|
|
||||||
CreatedBy varchar(50) charset utf8mb3 not null,
|
|
||||||
CreatedDate datetime not null,
|
|
||||||
constraint userRole_fk foreign key (Role) references roles (Role),
|
|
||||||
constraint user_pk primary key (UserName)
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
|
|
||||||
('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
|
|
||||||
('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
|
|
||||||
('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
|
|
||||||
('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
|
|
||||||
('Rifat', 'ApproveDar', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
|
|
||||||
|
|
||||||
|
|
||||||
create table roles
|
create table roles
|
||||||
(
|
(
|
||||||
RoleID int not null,
|
|
||||||
Role varchar(50) charset utf8mb3 not null,
|
Role varchar(50) charset utf8mb3 not null,
|
||||||
CreatedBy varchar(200) charset utf8mb3 not null,
|
CreatedBy varchar(200) charset utf8mb3 not null,
|
||||||
CreatedDate datetime not null,
|
CreatedDate datetime not null,
|
||||||
@ -28,6 +7,31 @@ create table roles
|
|||||||
primary key (Role)
|
primary key (Role)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
create table users
|
||||||
|
(
|
||||||
|
UserName varchar(50) charset utf8mb3 not null
|
||||||
|
primary key,
|
||||||
|
Password varchar(50) charset utf8mb3 not null,
|
||||||
|
Role varchar(50) charset utf8mb3 not null,
|
||||||
|
IsActive int default 1 not null,
|
||||||
|
CreatedBy varchar(50) charset utf8mb3 not null,
|
||||||
|
CreatedDate datetime not null,
|
||||||
|
Email varchar(50) null,
|
||||||
|
constraint users_Email_uindex
|
||||||
|
unique (Email),
|
||||||
|
constraint userRole_fk
|
||||||
|
foreign key (Role) references roles (Role)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
|
||||||
|
('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
|
||||||
|
('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
|
||||||
|
('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
|
||||||
|
('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
|
||||||
|
('Rifat', '1234', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
|
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
|
||||||
('Admin', 'Jacob', '2021-12-13 03:25:14'),
|
('Admin', 'Jacob', '2021-12-13 03:25:14'),
|
||||||
('regular', 'Colin', '2021-12-13 03:25:14');
|
('regular', 'Jacob', '2021-12-13 03:25:14');
|
||||||
|
|||||||
@ -2,52 +2,44 @@ create database Hobby;
|
|||||||
|
|
||||||
use hobby;
|
use hobby;
|
||||||
|
|
||||||
|
create table roles
|
||||||
|
(
|
||||||
|
Role varchar(50) charset utf8mb3 not null,
|
||||||
|
CreatedBy varchar(200) charset utf8mb3 not null,
|
||||||
|
CreatedDate datetime not null,
|
||||||
|
constraint role_pk
|
||||||
|
primary key (Role)
|
||||||
|
);
|
||||||
|
|
||||||
create table users
|
create table users
|
||||||
(
|
(
|
||||||
UserName varchar(50) charset utf8mb3 not null
|
UserName varchar(50) charset utf8mb3 not null
|
||||||
primary key,
|
primary key,
|
||||||
Password varchar(50) charset utf8mb3 null,
|
Password varchar(50) charset utf8mb3 not null,
|
||||||
RoleID int auto_increment,
|
Role varchar(50) charset utf8mb3 not null,
|
||||||
IsActive int default 1 null,
|
IsActive int default 1 not null,
|
||||||
CreatedBy varchar(50) charset utf8mb3 null,
|
CreatedBy varchar(50) charset utf8mb3 not null,
|
||||||
CreatedDate datetime null,
|
CreatedDate datetime not null,
|
||||||
constraint users_UserName_uindex
|
Email varchar(50) null,
|
||||||
unique (UserName),
|
constraint users_Email_uindex
|
||||||
constraint users_roles_RoleID_fk
|
unique (Email),
|
||||||
foreign key (RoleID) references roles (RoleID)
|
constraint userRole_fk
|
||||||
|
foreign key (Role) references roles (Role)
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Colin ', 'Waffle', 'Jacob', '2021-12-13 04:27:42');
|
|
||||||
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Danny', 'Spartan', 'Jacob', '2021-12-13 04:29:54');
|
INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
|
||||||
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Jacob', 'Teamhobby1234', 'SystemCreator', '2021-12-13 03:25:14');
|
('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
|
||||||
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Long', 'Joystick', 'Jacob', '2021-12-13 04:29:57');
|
('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
|
||||||
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Rifat', 'ApproveDar', 'Jacob', '2021-12-13 04:29:55');
|
('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
|
||||||
|
('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
|
||||||
|
('Rifat', '1234', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
|
||||||
|
|
||||||
|
|
||||||
create table roles
|
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
|
||||||
(
|
('Admin', 'Jacob', '2021-12-13 03:25:14'),
|
||||||
RoleID int auto_increment
|
('regular', 'Jacob', '2021-12-13 03:25:14');
|
||||||
primary key,
|
|
||||||
Role varchar(50) charset utf8mb3 null,
|
|
||||||
CreatedBy varchar(200) charset utf8mb3 null,
|
|
||||||
CreatedDate datetime null
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('Admin', 'SystemCreator', '2021-12-13 03:25:14');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:44');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:46');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:47');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:47');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:49');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:50');
|
|
||||||
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:51');
|
|
||||||
|
|
||||||
|
|
||||||
alter table users
|
|
||||||
add constraint users_roles_RoleID_fk
|
|
||||||
foreign key (RoleID) references roles (RoleID);
|
|
||||||
|
|
||||||
SET Global innodb_file_per_table=ON;
|
SET Global innodb_file_per_table=ON;
|
||||||
-- SET GLOBAL innodb_file_format='Barracuda';
|
-- SET GLOBAL innodb_file_format='Barracuda';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user