Create RegLog-valid database tables with DBI
DBI_tables_create.Rd
Create RegLog-valid database tables with DBI
Usage
DBI_tables_create(
conn,
account_name = "account",
reset_code_name = "reset_code",
use_log = FALSE,
log_name = "logs",
user_data = NULL,
hash_passwords = FALSE,
verbose = TRUE
)
Arguments
- conn
DBI connection object
- account_name
Name of the table for storing user accounts credentials. Defaults to 'account'. Mandatory table.
- reset_code_name
Name of the table for storing generated password reset codes. Defaults to 'reset_code'. Mandatory table.
- use_log
Should the table for keeping RegLogServer logs be also created? Defaults to FALSE
- log_name
Name of the table for storing logs from RegLogServer object. Used only if
use_log = TRUE
. Defaults tologs
- user_data
If you wish to import existing user database, you can input data.frame with that table in this argument. It should contain columns: username, password, email. Defaults to NULL.
- hash_passwords
If you are importing table of users upon tables creation, you can also specify if the password should be hashed using
scrypt::hashPassword
. Defaults toFALSE
. If you have unhashed passwords in imported table, set this option toTRUE
.- verbose
Boolean specific if the actions made by function should be printed back to the console. Defaults to
TRUE
.
Details
Currently, the function is tested and working correctly for SQLite, MySQL, MariaDB and PostrgreSQL databases. If you want to use another DBI-supported database, you need to create tables in other ways.
Created tables should have following structure:
account (default name)
id: integer, primary key, auto-increment
username: varchar(255), NOT NULL, unique key
password: varchar(255), NOT NULL
email: varchar(255), NOT NULL, unique key
create_time: datetime, NOT NULL
update_time: datetime, NOT NULL
reset_code (default name)
id: integer, primary key, auto-increment
user_id: integer, NOT NULL, key
reset_code: varchar(10), NOT NULL
used: tinyint, NOT NULL
create_time: datetime, NOT NULL
update_time: datetime, NOT NULL
logs (default name, optional)
id: integer, primary key, auto-increment
time: datetime, NOT NULL
session: varchar(255), NOT NULL
direction: varchar(255), NOT NULL
type: varchar(255), NOT NULL
note: varchar(255)
See also
Other RegLog databases:
gsheet_tables_create()
,
mongo_tables_create()
Examples
library(shiny.reglog)
# create a tenporary SQLite database
conn <- DBI::dbConnect(
RSQLite::SQLite(),
dbname = ":memory:"
)
# mockup user data
user_data <-
data.frame(username = c("Whatever", "Hanuka", "Helsinki", "How_come"),
password = c("&f5*MSYj^niDt=V'3.[dyEX.C/", "%}&B[fs\\}5PKE@,*+V\\tx9\"at]",
"35z*ofW\\'G_8,@vCC`]~?e$Jm%", "s:;r_eLn?-D6;oA-=\"^R(-Ew<x"),
email = c("what@mil.com", "hehe@soso.so", "nider@what.no", "crazzz@simpsy.com"))
# create the tables and input the data (hashing the passwords in the process)
DBI_tables_create(conn = conn,
user_data = user_data,
hash_passwords = TRUE,
verbose = FALSE)
#> $account
#> $account$table_name
#> [1] "account"
#>
#> $account$result
#> [1] TRUE
#>
#> $account$data_import
#> [1] 4
#>
#>
#> $reset_code
#> $reset_code$table_name
#> [1] "reset_code"
#>
#> $reset_code$result
#> [1] TRUE
#>
#>
# check generater tables
DBI::dbListTables(conn = conn)
#> [1] "account" "reset_code"
# check the "user" table for user data
DBI::dbReadTable(conn = conn,
"account")
#> id username
#> 1 1 Whatever
#> 2 2 Hanuka
#> 3 3 Helsinki
#> 4 4 How_come
#> password
#> 1 c2NyeXB0ABAAAAAIAAAAAZUPJpeSq7KFCj8M/Dya0BtM4vTpD5/Erh2IRIcAfAQXKwf3PhK0ZBHhb+mjcLwXQuaK0bw5zFLBpu8yi98Xk3bJYr+m2iXHAtJa5+jOJ5kY
#> 2 c2NyeXB0ABAAAAAIAAAAAbD3l4cHvlQ9F2CT3Mx/zfRSYz0pk1iCKo9RJo9/bD9UyP4OUwoRgHrc6ab9DcgjXeA1Jy4J27OFpEwxc4ET96iKPjoWQo/an6lAqx2LfcVI
#> 3 c2NyeXB0ABAAAAAIAAAAASV5om9+9/T862bhS7M04xV7AHFLLtzp67rCj3taFvhYenhO4m5/RVot8WC22Z4oP0vlROlhbx2J88h+6JDvuMJbWYZEn403C1XTyIZzmJ2Z
#> 4 c2NyeXB0ABAAAAAIAAAAAc0gLbtkhC3ruuqA3UWlx+B+3B4t2CMoH1lzOq99GKn9wmkwFMtM2K9BsJNjtgOU3WNGIwFcp0HCiBKZTaO87Aq8MZYhBTiCb0BJWEWP/agz
#> email create_time update_time
#> 1 what@mil.com 2022-08-31 18:02:54.305 2022-08-31 18:02:54.305
#> 2 hehe@soso.so 2022-08-31 18:02:54.305 2022-08-31 18:02:54.305
#> 3 nider@what.no 2022-08-31 18:02:54.305 2022-08-31 18:02:54.305
#> 4 crazzz@simpsy.com 2022-08-31 18:02:54.305 2022-08-31 18:02:54.305
# disconnect
DBI::dbDisconnect(conn = conn)