#wip: Sessions Management.

This commit is contained in:
mbruzon 2026-07-14 14:42:33 +02:00
parent ebe451c88a
commit a76e63aa39
16 changed files with 648 additions and 11 deletions

View File

@ -51,8 +51,23 @@
},
"AnP_QueuesManager_end" : null,
"AnP_DatabasesManager_start" : null,
"AnP_DatabasesManager_end" : null,
"AnP_DispatchesManager_start" : null,
"default_dispatches" : {
"sqlserver" : {
"sessions" : {
"type" : "SessionsSQLServerDispatch",
"database" : "anp"
}
}
},
"AnP_DispatchesManager_end" : null,
"AnP_ControllersManager_start" : null,
"default_controllers" : {
"sessions" : "SessionsController",
"ai" : "AIController",
"clonations_processes" : "CloneController",
"ai_translate" : "AITranslateController"

View File

@ -2,13 +2,12 @@
# -*- coding: utf-8 -*-
from typing import Self, Callable
from AnP.Abstracts.ModelAbstract import ModelAbstract
from AnP.Abstracts.ControllerAbstract import ControllerAbstract
from AnP.Models.RequestModel import RequestModel
from AnP.Models.AIResponseModel import AIResponseModel
from AnP.Utils.Common import Common
class AIController(ControllerAbstract, ModelAbstract):
class AIController(ControllerAbstract):
def __analyse_loras(self:Self,
iterations:dict[str, int],

View File

@ -0,0 +1,26 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Self
from AnP.Abstracts.ControllerAbstract import ControllerAbstract
from AnP.Models.RequestModel import RequestModel
class SessionsController(ControllerAbstract):
def get_guest(self:Self, request:RequestModel) -> None:
pass
def login(self:Self, request:RequestModel) -> None:
pass
def logout(self:Self, request:RequestModel) -> None:
pass
def update(self:Self, request:RequestModel) -> None:
pass
def register(self:Self, request:RequestModel) -> None:
pass
def change_password(self:Self, request:RequestModel) -> None:
pass

View File

@ -0,0 +1,75 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Self, Any, Optional, Sequence
from AnP.Interfaces.Application.AnPInterface import AnPInterface
from AnP.Abstracts.DispatchAbstract import DispatchAbstract
from AnP.Models.DatabaseResponseModel import DatabaseResponseModel
from AnP.Utils.Common import Common
class SessionsSQLServerDispatch(DispatchAbstract):
def __init__(self:Self, anp:AnPInterface, inputs:Optional[dict[str, Any|None]|Sequence[Any|None]] = None) -> None:
super().__init__(anp, inputs)
self.__database:str = Common.get_value("database", inputs, "anp_sqlserver")
def get_guest(self:Self, session:int|None, ip:str) -> tuple[str, int|None, list[str]]:
response:DatabaseResponseModel = self.anp.databases.execute(
self.__database,
"execute dbo.sessions_login_guest {session}, {ip}, @errors output, @id output",
{"session" : session, "ip" : ip}
)
return response.variables.get("errors"), response.variables.get("id")
def login(self:Self, session:int, nick:str, password:str, ip:str) -> tuple[str, int|None, list[str]]:
response:DatabaseResponseModel = self.anp.databases.execute(
self.__database,
"execute dbo.sessions_login {session}, {nick}, {password}, {ip}, @errors output, @id output",
{"session" : session, "nick" : nick, "password" : password, "ip" : ip}
)
return response.variables.get("errors"), response.variables.get("id")
def logout(self:Self, session:int) -> tuple[str, int|None, list[str]]:
response:DatabaseResponseModel = self.anp.databases.execute(
self.__database,
"execute dbo.sessions_logout {session}, @errors output, @id output",
{"session" : session}
)
return response.variables.get("errors"), response.variables.get("id")
def update(self:Self, session:int, ip:str) -> tuple[str, list[str]]:
response:DatabaseResponseModel = self.anp.databases.execute(
self.__database,
"execute dbo.sessions_update {session}, {ip}, @errors output",
{"session" : session, "ip" : ip}
)
return response.variables.get("errors")
def register(self:Self, session:int, nick:str, password:str, email:str) -> str:
response:DatabaseResponseModel = self.anp.databases.execute(
self.__database,
"execute dbo.sessions_login {session}, {nick}, {password}, {email}, @errors output",
{"session" : session, "nick" : nick, "password" : password, "email" : email}
)
return response.variables.get("errors")
def change_password(self:Self, session:int, current_password:str, new_password:str) -> str:
response:DatabaseResponseModel = self.anp.databases.execute(
self.__database,
"execute dbo.sessions_login {session}, {current_password}, {new_password}, @errors output",
{"session" : session, "current_password" : current_password, "new_password" : new_password}
)
return response.variables.get("errors")

View File

@ -13,12 +13,16 @@ from AnP.Drivers.SeleniumDriver import SeleniumDriver
from AnP.Drivers.SQLiteDriver import SQLiteDriver
from AnP.Controllers.CloneController import CloneController
from AnP.Controllers.AITranslateController import AITranslateController
from AnP.Controllers.SessionsController import SessionsController
from AnP.Dispatches.SQLServer.SessionsSQLServerDispatch import SessionsSQLServerDispatch
inputs:dict[str, dict[str, Any|None]] = {
"default_models" : {
"SessionsController" : SessionsController,
"AIController" : AIController,
"CloneController" : CloneController,
"AITranslateController" : AITranslateController,
"SessionsSQLServerDispatch" : SessionsSQLServerDispatch,
"WebSocketServerDriver" : WebSocketServerDriver,
"HTTPSocketServerDriver" : HTTPSocketServerDriver,
"HTTPServerDriver" : HTTPServerDriver,

View File

@ -55,7 +55,7 @@ create procedure dbo.permissions_tables_create as begin set nocount on
constraint fk_permissions_groups_permission foreign key(permission) references dbo.Permissions(id)
on update no action
on delete no action,
constraint fk_permissions_groups_group foreign key([group]) references dbo.Users(id)
constraint fk_permissions_groups_group foreign key([group]) references dbo.Groups(id)
on update no action
on delete no action,
constraint uq_permissions_groups unique(permission, [group]) with(fillfactor = 90)
@ -107,7 +107,7 @@ create procedure dbo.permissions_tables_create as begin set nocount on
constraint fk__permissions_groups_permission foreign key(permission) references dbo.Permissions(id)
on update no action
on delete no action,
constraint fk__permissions_groups_group foreign key([group]) references dbo.Users(id)
constraint fk__permissions_groups_group foreign key([group]) references dbo.Groups(id)
on update no action
on delete no action
)

View File

@ -14,6 +14,7 @@ create procedure dbo.common_tables_fill as begin set nocount on
declare @guest_user_id integer = (select top 1 id from dbo.Users where nick = 'guest')
declare @guest_group_id integer = (select top 1 id from dbo.Groups where [name] = 'guest' and date_out is null)
declare @root_group_id integer = (select top 1 id from dbo.Groups where [name] = 'root' and date_out is null)
declare @user_permissions_id integer = (select top 1 id from dbo.Permissions where [name] = 'user' and date_out is null)
declare @guest_permissions_id integer = (select top 1 id from dbo.Permissions where [name] = 'guest' and date_out is null)
declare @administrator_permissions_id integer = (select top 1 id from dbo.Permissions where [name] = 'administrator' and date_out is null)
declare @user_group_id integer = (select top 1 id from dbo.Groups where [name] = 'users' and date_out is null)
@ -75,8 +76,40 @@ create procedure dbo.common_tables_fill as begin set nocount on
delete from dbo._Ips where [session] != @machine
end
execute dbo.users_tables_upgrade
execute dbo.ips_tables_upgrade
if (select top 1 0 from information_schema.table_constraints where
table_catalog = db_name() and
table_name = 'Users' and
constraint_name = 'fk_users_session'
) is null alter table dbo.Users add constraint fk_users_session foreign key([session]) references dbo.Sessions(id)
on update no action
on delete no action
if (select top 1 0 from information_schema.table_constraints where
table_catalog = db_name() and
table_name = '_Users' and
constraint_name = 'fk__users_session'
) is null alter table dbo._Users add constraint fk__users_session foreign key([session]) references dbo.Sessions(id)
on update no action
on delete no action
if (select top 1 0 from information_schema.table_constraints where
table_catalog = db_name() and
table_name = 'Ips' and
constraint_name = 'fk_ips_session'
) is null alter table dbo.Ips add constraint fk_ips_session foreign key([session]) references dbo.Sessions(id)
on update no action
on delete no action
if (select top 1 0 from information_schema.table_constraints where
table_catalog = db_name() and
table_name = '_Ips' and
constraint_name = 'fk__ips_session'
) is null alter table dbo._Ips add constraint fk__ips_session foreign key([session]) references dbo.Sessions(id)
on update no action
on delete no action
-- execute dbo.users_tables_upgrade
-- execute dbo.ips_tables_upgrade
end
@ -134,9 +167,14 @@ create procedure dbo.common_tables_fill as begin set nocount on
(@procedure, @machine, 'users', 1)
set @user_group_id = scope_identity()
end
if (select top 1 0 from dbo.PermissionsGroups where permission = @guest_permissions_id and [group] = @user_group_id) is null
if @user_permissions_id is null begin
insert into dbo.Permissions([procedure], [session], [name], [description]) values
(@procedure, @machine, 'user', 'User permissions')
set @user_permissions_id = scope_identity()
end
if (select top 1 0 from dbo.PermissionsGroups where permission = @user_permissions_id and [group] = @user_group_id) is null
insert into dbo.PermissionsGroups([procedure], [session], permission, [group]) values
(@procedure, @machine, @guest_permissions_id, @user_group_id)
(@procedure, @machine, @user_permissions_id, @user_group_id)
drop table #Settings

View File

@ -1,5 +1,18 @@
use AnP
if object_id(N'dbo.bw', N'FN') is not null drop function dbo.bw
go
create function dbo.bw(
@number bigint,
@bits smallint
) returns bigint begin
return (case
when @bits > 0 then @number * power(cast(2 as bigint), @bits)
when @bits < 0 then @number / power(cast(2 as bigint), -@bits)
else @number end)
end
go
if object_id(N'dbo.where_set', N'FN') is not null drop function dbo.where_set
go
create function dbo.where_set(
@ -22,7 +35,7 @@ create procedure tables_list(
@pages integer output,
@items integer output,
@results integer output
) as begin set nocount on
) with execute as owner as begin set nocount on
declare @item_from integer
declare @query nvarchar(max)
@ -45,7 +58,7 @@ create procedure tables_list(
set @query = (
N'select * from ' + @view + @where_string +
' order by ' + (case when isnull(@order_by, '') = '' then 'id asc' else @order_by end) +
' order by ' + (case when isnull(@order_by, '') = '' then 'id desc' else @order_by end) +
' offset ' + convert(varchar(14), (@page - 1) * @items_per_page) + ' rows fetch next ' + convert(varchar(14), @items_per_page) + ' rows only'
)
@ -53,4 +66,15 @@ create procedure tables_list(
set @results = @@rowcount
end
go
if object_id(N'dbo.json_set', N'FN') is not null drop function dbo.json_set
go
create function dbo.json_set(
@path varchar(max),
@key varchar(max),
@value varchar(max)
) returns varchar(max) begin
return json_modify(@path, '$.' + @key, @value)
end
go

View File

@ -0,0 +1,456 @@
use AnP
if object_id(N'dbo.SessionsPermissionsView', N'V') is not null drop view dbo.SessionsPermissionsView
go
create view dbo.SessionsPermissionsView as
select distinct
sessions.id as [session],
permissions.name as [permission]
from dbo.SessionsActived sessions
join dbo.Users users on sessions.[user] = users.id
join dbo.Ips ips on sessions.[ip] = ips.id
join dbo.GroupsUsers groups_users on groups_users.belongs = 1 and users.id = groups_users.[user]
join dbo.GroupsIps groups_ips on groups_ips.belongs = 1 and ips.id = groups_ips.[ip]
join dbo.Groups groups on groups_users.[group] = groups.id or groups_ips.[group] = groups.id
join dbo.PermissionsGroups permissions_groups on permissions_groups.belongs = 1 and groups.id = permissions_groups.[group]
join dbo.Permissions permissions on permissions_groups.[permission] = permissions.id
where
users.date_out is null and
ips.date_out is null and
groups.date_out is null and
groups_users.date_out is null and
groups_ips.date_out is null and
permissions.date_out is null and
permissions_groups.date_out is null
go
if object_id(N'dbo.sessions_validate', N'FN') is not null drop function dbo.sessions_validate
go
create function dbo.sessions_validate(
@session integer,
@permissions varchar(max) = ''
) returns integer begin
declare @error integer = (case
when @session is null then dbo.bw(1, 1)
when @session < 1 then dbo.bw(1, 2)
else isnull((
select 0 from dbo.SessionsActived where id = @session
), isnull((
select dbo.bw(1, 4) from dbo.Sessions where id = @session
), dbo.bw(1, 3))) end)
if @error = 0 and @permissions != '' and (
select top 1 0 from dbo.SessionsPermissionsView where [session] = @session and [permission] in (
select [value] from string_split(@permissions, ',')
)
) is null
set @error = dbo.bw(1, 5)
return @error
end
go
if object_id(N'dbo.sessions_nick_validate', N'FN') is not null drop function dbo.sessions_nick_validate
go
create function dbo.sessions_nick_validate(
@nick varchar(32)
) returns integer begin
return (case
when @nick is null then dbo.bw(1, 1)
when @nick = '' then dbo.bw(1, 2)
when len(@nick) > 32 then dbo.bw(1, 3)
when @nick like '%[^a-zA-Z0-9]%' then dbo.bw(1, 4)
when @nick like '[^a-zA-Z]%' then dbo.bw(1, 5)
else 0 end)
end
go
if object_id(N'dbo.sessions_password_validate', N'FN') is not null drop function dbo.sessions_password_validate
go
create function dbo.sessions_password_validate(
@password varchar(256)
) returns integer begin
return (case
when @password is null then dbo.bw(1, 1)
when @password = '' then dbo.bw(1, 2)
when len(@password) > 256 then dbo.bw(1, 3)
else (
(case when @password collate Latin1_General_100_CS_AS_SC_UTF8 not like '%[a-z]%' then dbo.bw(1, 4) else 0 end) |
(case when @password collate Latin1_General_100_CS_AS_SC_UTF8 not like '%[A-Z]%' then dbo.bw(1, 5) else 0 end) |
(case when @password not like '%[0-9]%' then dbo.bw(1, 6) else 0 end) |
(case when @password not like '%[^a-zA-Z0-9]%' then dbo.bw(1, 7) else 0 end) |
0) end)
end
go
if object_id(N'dbo.ips_set', N'P') is not null drop procedure dbo.ips_set
go
create procedure dbo.ips_set(
@procedure integer,
@session integer,
@address varchar(39),
@error integer output,
@id integer output
) as begin set nocount on
set @error = (case
when @address is null then dbo.bw(1, 1)
when @address = '' then dbo.bw(1, 2)
when len(@address) > 39 then dbo.bw(1, 3)
when @address not like '[0-9a-fA-F:.]%' then dbo.bw(1, 4)
when not ((
@address like '%._%._%._%' and
@address not like '%[^0-9.]%' and
len(@address) - len(replace(@address, '.', '')) = 3 and
parsename(@address, 1) between 0 and 255 and
parsename(@address, 2) between 0 and 255 and
parsename(@address, 3) between 0 and 255 and
parsename(@address, 4) between 0 and 255
) or (
@address not like '%[^0-9a-fA-F:]%' and
@address like '%:%' and
@address not like '%:::%' and
@address not like '%[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]%' and
len(@address) - len(replace(@address, ':', '')) between 2 and 7
)) then dbo.bw(1, 5)
else 0 end)
if @error = 0 begin
insert into dbo.Ips([procedure], [session], [address]) values (@procedure, @session, @address)
set @id = scope_identity()
end
end
go
if object_id(N'dbo.sessions_register', N'P') is not null drop procedure dbo.sessions_register
go
create procedure dbo.sessions_register(
@session integer,
@nick varchar(32),
@password varchar(256),
@email varchar(256),
@errors varchar(512) output
) as begin set nocount on
declare @database varchar(64) = db_name()
declare @procedure_id integer
declare @parameters varchar(max) = '{' +
'"session":' + convert(varchar(14), @session) + ',' +
'"nick":"' + @nick + '",' +
-- '"password":"' + @password + '",' +
'"email":"' + @email + '",' +
'"id":null' +
'}'
declare @error_code integer = 0
declare @password_hash varbinary(64)
declare @id integer = null
execute dbo.procedure_get_id @database, 'sessions_register', @procedure_id output
set @errors = ''
begin try
declare @nick_error integer = dbo.sessions_nick_validate(@nick)
declare @password_error integer = dbo.sessions_password_validate(@password)
set @error_code = (
dbo.bw(dbo.sessions_validate(@session, 'guest'), 1) |
dbo.bw(@nick_error, 7) |
dbo.bw(@password_error, 14) |
0)
if @error_code = 0 begin
if (select top 1 0 from dbo.Users where date_out is null and nick = @nick) is not null
set @error_code = @error_code | dbo.bw(1, 13)
if @error_code = 0 begin
insert into dbo.Users(nick, password) values
(@nick, hashbytes(dbo.settings_get('password_hash_algorithm', null, 'SHA2_512'), @password))
set @id = scope_identity()
set @parameters = dbo.json_set(@parameters, 'id', @id)
end
end
end try
begin catch
set @error_code = @error_code | dbo.bw(1, 0)
execute dbo.exceptions_set @procedure_id, @session, @parameters, @errors
end catch
execute dbo.logs_set @procedure_id, @session, @parameters, @errors, 1
end
go
if object_id(N'dbo.sessions_login_guest', N'P') is not null drop procedure dbo.sessions_login_guest
go
create procedure dbo.sessions_login_guest(
@session integer,
@ip varchar(39),
@errors varchar(512) output,
@id integer output
) as begin set nocount on
declare @database varchar(64) = db_name()
declare @procedure_id integer
declare @machine integer = dbo.machine_session_get()
declare @parameters varchar(max) = '{"ip":"' + @ip + '","id":null}'
declare @error_code integer = 0
set @errors = ''
execute dbo.procedure_get_id @database, 'sessions_login_guest', @procedure_id output
begin try
declare @ip_id integer
declare @ip_error integer
execute dbo.ips_set @procedure_id, @session, @ip, @ip_error output, @ip_id output
set @error_code = (
(case when @session is null then 0 else dbo.bw(1, 1) end) |
dbo.bw(@ip_error, 2) |
0)
if @error_code = 0 begin
insert into dbo.SessionsActived([procedure], [user], [ip]) values (@procedure_id, @machine, @ip_id)
set @id = scope_identity()
set @parameters = dbo.json_set(@parameters, 'id', @id)
end
end try
begin catch
set @error_code = @errors | dbo.bw(1, 0)
execute dbo.exceptions_set @procedure_id, @machine, @parameters, @errors
end catch
set @errors = ''
select [permission] from dbo.SessionsPermissionsView where [session] = @id
execute dbo.logs_set @procedure_id, @machine, @parameters, @errors, 1
end
go
if object_id(N'dbo.sessions_login', N'P') is not null drop procedure dbo.sessions_login
go
create procedure dbo.sessions_login(
@session integer,
@user varchar(32),
@password varchar(256),
@ip varchar(39),
@errors varchar(512) output,
@id integer output
) as begin set nocount on
declare @database varchar(64) = db_name()
declare @procedure_id integer
declare @error_code integer = 0
declare @parameters varchar(max) = '{' +
'"user":"' + @user + '"' +
-- ',"password":"' + @password + '"' +
',"ip":"' + @ip + '",' +
'"id":null' +
'}'
set @errors = ''
execute dbo.procedure_get_id @database, 'sessions_login', @procedure_id output
begin try
declare @ip_id integer
declare @ip_error integer
execute dbo.ips_set @procedure_id, @session, @ip, @ip_error output, @ip_id output
set @error_code = (
dbo.bw(dbo.sessions_validate(@session, 'guest'), 1) |
dbo.bw(dbo.sessions_nick_validate(@user), 7) |
dbo.bw(dbo.sessions_password_validate(@password), 15) |
dbo.bw(@ip_error, 23) |
0)
if @error_code = 0 begin
declare @user_id integer = (select top 1 id from dbo.Users where nick = @user)
set @error_code = @error_code | (select top 1 (
(case when date_out is null then 0 else dbo.bw(1, 13) end) |
(case when password = hashbytes(dbo.settings_get('password_hash_algorithm', null, 'SHA2_512'), @password) then 0 else dbo.bw(1, 14) end) |
0) from dbo.Users where id = @user_id)
if @error_code = 0 begin
insert into dbo.SessionsActived([procedure], [user], [ip]) values(@procedure_id, @user_id, @ip_id)
set @id = scope_identity()
set @parameters = dbo.json_set(@parameters, 'id', @id)
end
end
end try
begin catch
set @error_code = @errors | dbo.bw(1, 0)
execute dbo.exceptions_set @procedure_id, @session, @parameters, @errors
end catch
execute dbo.logs_set @procedure_id, @session, @parameters, @errors, 1
end
go
if object_id(N'dbo.sessions_logout', N'P') is not null drop procedure dbo.sessions_logout
go
create procedure dbo.sessions_logout(
@session integer,
@errors varchar(512) output,
@id integer output
) as begin set nocount on
declare @database varchar(64) = db_name()
declare @procedure_id integer
declare @error_code integer = 0
declare @parameters varchar(max) = '{' +
'"session":' + convert(varchar(14), @session) + ',' +
'"id":null' +
'}'
set @errors = ''
execute dbo.procedure_get_id @database, 'sessions_logout', @procedure_id output
begin try
set @error_code = (
dbo.bw(dbo.sessions_validate(@session, ''), 1) |
0)
if @error_code = 0 begin
insert into dbo.SessionsActived([procedure], [user], [ip]) select @procedure_id, [user], [ip] from dbo.SessionsActived where id = @session
set @id = scope_identity()
delete from dbo.SessionsActived where id = @session
set @parameters = dbo.json_set(@parameters, 'id', @id)
end
end try
begin catch
set @error_code = @errors | dbo.bw(1, 0)
execute dbo.exceptions_set @procedure_id, @session, @parameters, @errors
end catch
execute dbo.logs_set @procedure_id, @session, @parameters, @errors, 1
end
go
if object_id(N'dbo.sessions_update', N'P') is not null drop procedure dbo.sessions_update
go
create procedure dbo.sessions_update(
@session integer,
@ip varchar(39),
@errors varchar(512) output,
@id integer output
) as begin set nocount on
declare @database varchar(64) = db_name()
declare @procedure_id integer
declare @error_code integer = 0
declare @parameters varchar(max) = '{' +
'"session":' + convert(varchar(14), @session) + ',' +
'"ip":"' + @ip + '",' +
'"id":null' +
'}'
set @errors = ''
execute dbo.procedure_get_id @database, 'sessions_update', @procedure_id output
begin try
declare @ip_id integer
declare @ip_error integer
execute dbo.ips_set @procedure_id, @session, @ip, @ip_error output, @ip_id output
set @error_code = (
dbo.bw(dbo.sessions_validate(@session, ''), 1) |
dbo.bw(@ip_error, 2) |
0)
if @error_code = 0
update dbo.SessionsActived set [ip] = @ip_id, date_last = getdate() where id = @session
end try
begin catch
set @error_code = @errors | dbo.bw(1, 0)
execute dbo.exceptions_set @procedure_id, @session, @parameters, @errors
end catch
execute dbo.logs_set @procedure_id, @session, @parameters, @errors, 8
end
go
if object_id(N'dbo.sessions_autoclose', N'P') is not null drop procedure dbo.sessions_autoclose
go
create procedure dbo.sessions_autoclose as begin set nocount on
delete from dbo.SessionsActived where datediff(second, date_last, getdate()) > timeout
end
go
if object_id(N'dbo.sessions_change_password', N'P') is not null drop procedure dbo.sessions_change_password
go
create procedure dbo.sessions_change_password(
@session integer,
@current_password varchar(256),
@new_password varchar(256),
@errors varchar(512) output
) as begin set nocount on
declare @database varchar(64) = db_name()
declare @procedure_id integer
declare @error_code integer = 0
declare @parameters varchar(max) = '{' +
'"session":' + convert(varchar(14), @session) + ',' +
'"id":null' +
'}'
set @errors = ''
execute dbo.procedure_get_id @database, 'sessions_change_password', @procedure_id output
begin try
set @error_code = (
dbo.bw(dbo.sessions_validate(@session, ''), 1) |
dbo.bw(dbo.sessions_password_validate(@current_password), 6) |
dbo.bw(dbo.sessions_password_validate(@new_password), 15) |
(case when @current_password = @new_password then dbo.bw(1, 23) else 0 end) |
0)
if @error_code = 0 begin
if (
select top 1 0
from dbo.SessionsActived sessions
join dbo.Users users on sessions.[user] = users.id
where
sessions.id = @session and
users.password != hashbytes(dbo.settings_get('password_hash_algorithm', null, 'SHA2_512'), @current_password)
) is null
set @error_code = @error_code | dbo.bw(1, 14)
else
update users
set users.[password] = hashbytes(dbo.settings_get('password_hash_algorithm', null, 'SHA2_512'), @new_password)
from dbo.SessionsActived sessions
join dbo.Users users on sessions.[user] = users.id
where sessions.id = @session
end
end try
begin catch
set @error_code = @errors | dbo.bw(1, 0)
execute dbo.exceptions_set @procedure_id, @session, @parameters, @errors
end catch
execute dbo.logs_set @procedure_id, @session, @parameters, @errors, 1
end
go

View File

@ -12,7 +12,7 @@ if exist Tools\sqlserver.secrets.cmd (
call Tools\sqlserver.secrets.cmd
)
docker compose ps | findstr "anp-sql-server" >nul || call Tools\dockers.execute.bat
docker compose ps | findstr "anp-sql-server" >nul || (call Tools\dockers.execute.bat && sleep 3)
for %%f in (SQLServer\AnP.*.sql) do (
echo %%f