mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 02:18:26 +00:00
Add a new column to distinguish local from external users
This commit is contained in:
@ -0,0 +1,8 @@
|
||||
ALTER TABLE "user_"
|
||||
ADD COLUMN "account_source" varchar(254);
|
||||
|
||||
UPDATE "user_"
|
||||
SET "account_source" = 'local';
|
||||
|
||||
ALTER TABLE "user_"
|
||||
ALTER COLUMN "account_source" SET NOT NULL;
|
@ -0,0 +1,8 @@
|
||||
ALTER TABLE `user_`
|
||||
ADD COLUMN (`account_source` varchar(254));
|
||||
|
||||
UPDATE `user_`
|
||||
SET `account_source` = 'local';
|
||||
|
||||
ALTER TABLE `user_`
|
||||
MODIFY `account_source` varchar(254) NOT NULL;
|
@ -0,0 +1,8 @@
|
||||
ALTER TABLE "user_"
|
||||
ADD COLUMN "account_source" varchar(254);
|
||||
|
||||
UPDATE "user_"
|
||||
SET "account_source" = 'local';
|
||||
|
||||
ALTER TABLE "user_"
|
||||
ALTER COLUMN "account_source" SET NOT NULL;
|
@ -35,6 +35,9 @@ trait DoobieMeta extends EmilDoobieMeta {
|
||||
e.apply(a).noSpaces
|
||||
)
|
||||
|
||||
implicit val metaAccountSource: Meta[AccountSource] =
|
||||
Meta[String].imap(AccountSource.unsafeFromString)(_.name)
|
||||
|
||||
implicit val metaDuration: Meta[Duration] =
|
||||
Meta[Long].imap(Duration.millis)(_.millis)
|
||||
|
||||
|
@ -24,7 +24,8 @@ object QLogin {
|
||||
account: AccountId,
|
||||
password: Password,
|
||||
collectiveState: CollectiveState,
|
||||
userState: UserState
|
||||
userState: UserState,
|
||||
source: AccountSource
|
||||
)
|
||||
|
||||
def findUser(acc: AccountId): ConnectionIO[Option[Data]] = {
|
||||
@ -32,7 +33,7 @@ object QLogin {
|
||||
val coll = RCollective.as("c")
|
||||
val sql =
|
||||
Select(
|
||||
select(user.cid, user.login, user.password, coll.state, user.state),
|
||||
select(user.cid, user.login, user.password, coll.state, user.state, user.source),
|
||||
from(user).innerJoin(coll, user.cid === coll.id),
|
||||
user.login === acc.user && user.cid === acc.collective
|
||||
).build
|
||||
|
@ -21,6 +21,7 @@ case class RUser(
|
||||
cid: Ident,
|
||||
password: Password,
|
||||
state: UserState,
|
||||
source: AccountSource,
|
||||
email: Option[String],
|
||||
loginCount: Int,
|
||||
lastLogin: Option[Timestamp],
|
||||
@ -36,6 +37,7 @@ object RUser {
|
||||
val cid = Column[Ident]("cid", this)
|
||||
val password = Column[Password]("password", this)
|
||||
val state = Column[UserState]("state", this)
|
||||
val source = Column[AccountSource]("account_source", this)
|
||||
val email = Column[String]("email", this)
|
||||
val loginCount = Column[Int]("logincount", this)
|
||||
val lastLogin = Column[Timestamp]("lastlogin", this)
|
||||
@ -48,6 +50,7 @@ object RUser {
|
||||
cid,
|
||||
password,
|
||||
state,
|
||||
source,
|
||||
email,
|
||||
loginCount,
|
||||
lastLogin,
|
||||
@ -65,7 +68,7 @@ object RUser {
|
||||
DML.insert(
|
||||
t,
|
||||
t.all,
|
||||
fr"${v.uid},${v.login},${v.cid},${v.password},${v.state},${v.email},${v.loginCount},${v.lastLogin},${v.created}"
|
||||
fr"${v.uid},${v.login},${v.cid},${v.password},${v.state},${v.source},${v.email},${v.loginCount},${v.lastLogin},${v.created}"
|
||||
)
|
||||
}
|
||||
|
||||
@ -134,7 +137,7 @@ object RUser {
|
||||
val t = Table(None)
|
||||
DML.update(
|
||||
t,
|
||||
t.cid === accountId.collective && t.login === accountId.user,
|
||||
t.cid === accountId.collective && t.login === accountId.user && t.source === AccountSource.Local,
|
||||
DML.set(t.password.setTo(hashedPass))
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user