--- ibx/trunk/examples/DBAdmin/DataModule.lfm 2018/04/16 09:24:55 208 +++ ibx/trunk/examples/DBAdmin/DataModule.lfm 2018/03/14 12:48:51 209 @@ -1,11 +1,11 @@ object DatabaseData: TDatabaseData OldCreateOrder = False Height = 552 - HorizontalOffset = 662 + HorizontalOffset = 645 VerticalOffset = 400 Width = 730 object IBDatabase1: TIBDatabase - Connected = False + Connected = True AfterConnect = IBDatabase1AfterConnect AfterDisconnect = IBDatabase1AfterDisconnect BeforeDisconnect = IBDatabase1BeforeDisconnect @@ -260,21 +260,6 @@ object DatabaseData: TDatabaseData left = 544 top = 112 end - object IBStatisticalService1: TIBStatisticalService - Params.Strings = ( - '' - ) - LoginPrompt = False - TraceFlags = [] - Options = [HeaderPages] - left = 33 - top = 283 - end - object IBConfigService1: TIBConfigService - TraceFlags = [] - left = 162 - top = 285 - end object TableNameLookup: TIBQuery AllowAutoActivateTransaction = False Database = IBDatabase1 @@ -293,20 +278,6 @@ object DatabaseData: TDatabaseData left = 288 top = 283 end - object IBServerProperties1: TIBServerProperties - Params.Strings = ( - '' - ) - TraceFlags = [] - Options = [] - left = 40 - top = 368 - end - object IBLogService1: TIBLogService - TraceFlags = [] - left = 162 - top = 368 - end object UserList: TIBQuery AllowAutoActivateTransaction = False Database = IBDatabase1 @@ -322,9 +293,9 @@ object DatabaseData: TDatabaseData GeneratorField.ApplyOnEvent = gaeOnNewRecord SQL.Strings = ( 'Select A.SEC$DESCRIPTION, A.SEC$PLUGIN, A.SEC$ADMIN,' - 'A.SEC$ACTIVE, Trim(A.SEC$USER_NAME) as UserName, A.SEC$MIDDLE_NAME,' + 'A.SEC$ACTIVE, Trim(A.SEC$USER_NAME) as SEC$USER_NAME, A.SEC$MIDDLE_NAME,' 'A.SEC$FIRST_NAME, A.SEC$LAST_NAME,' - 'cast(NULL as VarChar(32)) as USERPASSWORD, CURRENT_CONNECTION,' + 'cast(NULL as VarChar(32)) as SEC$PASSWORD, CURRENT_CONNECTION,' 'case when Count(B.MON$ATTACHMENT_ID) > 0 then true else false end as LoggedIn,' 'case When C.SEC$USER is not null then true else false end as DBCreator' 'From SEC$USERS A' @@ -400,30 +371,10 @@ object DatabaseData: TDatabaseData Required = False Size = 32 end - object UserListUSERPASSWORD: TIBStringField - FieldKind = fkData - FieldName = 'USERPASSWORD' - Index = 6 - LookupCache = False - ProviderFlags = [pfInUpdate, pfInWhere] - ReadOnly = False - Required = False - Size = 32 - end - object UserListUSERNAME: TIBStringField - FieldKind = fkData - FieldName = 'USERNAME' - Index = 7 - LookupCache = False - ProviderFlags = [pfInUpdate, pfInWhere] - ReadOnly = False - Required = False - Size = 31 - end object UserListLOGGEDIN: TBooleanField FieldKind = fkData FieldName = 'LOGGEDIN' - Index = 8 + Index = 6 LookupCache = False ProviderFlags = [pfInUpdate, pfInWhere] ReadOnly = False @@ -433,7 +384,7 @@ object DatabaseData: TDatabaseData object UserListCURRENT_CONNECTION: TIBLargeIntField FieldKind = fkData FieldName = 'CURRENT_CONNECTION' - Index = 9 + Index = 7 LookupCache = False ProviderFlags = [pfInUpdate, pfInWhere] ReadOnly = False @@ -442,7 +393,7 @@ object DatabaseData: TDatabaseData object UserListDBCREATOR: TBooleanField FieldKind = fkData FieldName = 'DBCREATOR' - Index = 10 + Index = 8 LookupCache = False ProviderFlags = [pfInUpdate, pfInWhere] ReadOnly = False @@ -452,7 +403,7 @@ object DatabaseData: TDatabaseData object UserListUSERID: TLongintField FieldKind = fkCalculated FieldName = 'USERID' - Index = 11 + Index = 9 LookupCache = False ProviderFlags = [pfInUpdate, pfInWhere] ReadOnly = False @@ -461,26 +412,46 @@ object DatabaseData: TDatabaseData object UserListGROUPID: TLongintField FieldKind = fkCalculated FieldName = 'GROUPID' + Index = 10 + LookupCache = False + ProviderFlags = [pfInUpdate, pfInWhere] + ReadOnly = False + Required = False + end + object UserListSECPASSWORD: TIBStringField + FieldKind = fkData + FieldName = 'SEC$PASSWORD' + Index = 11 + LookupCache = False + ProviderFlags = [pfInUpdate, pfInWhere] + ReadOnly = False + Required = False + Size = 32 + end + object UserListSECUSER_NAME: TIBStringField + FieldKind = fkData + FieldName = 'SEC$USER_NAME' Index = 12 LookupCache = False ProviderFlags = [pfInUpdate, pfInWhere] ReadOnly = False Required = False + Size = 31 end end object UpdateUsers: TIBUpdate RefreshSQL.Strings = ( 'Select A.SEC$DESCRIPTION, A.SEC$PLUGIN, A.SEC$ADMIN,' - 'A.SEC$ACTIVE, A.SEC$USER_NAME as UserName, A.SEC$MIDDLE_NAME,' + 'A.SEC$ACTIVE, A.SEC$USER_NAME, A.SEC$MIDDLE_NAME,' 'A.SEC$FIRST_NAME, A.SEC$LAST_NAME,' - 'cast(NULL as VarChar(32)) as USERPASSWORD, CURRENT_CONNECTION,' + 'cast(NULL as VarChar(32)) as SEC$PASSWORD, CURRENT_CONNECTION,' 'case when B.MON$ATTACHMENT_ID is not null then true else false end as LoggedIn,' 'case When C.SEC$USER is not null then true else false end as DBCreator' 'From SEC$USERS A' 'Left Outer Join MON$ATTACHMENTS B' 'On A.SEC$USER_NAME = B.MON$USER' 'Left Outer Join SEC$DB_CREATORS C on C.SEC$USER = A.SEC$USER_NAME' - 'Where A.SEC$USER_NAME = :UserName' + 'Where A.SEC$USER_NAME = :SEC$USER_NAME' ) OnApplyUpdates = UpdateUsersApplyUpdates left = 544 @@ -498,19 +469,19 @@ object DatabaseData: TDatabaseData GeneratorField.ApplyOnEvent = gaeOnNewRecord SQL.Strings = ( 'SELECT r.RDB$ROLE_NAME, r.RDB$OWNER_NAME, r.RDB$DESCRIPTION, r.RDB$SYSTEM_FLAG, ' - 'P.RDB$USER,RDB$PRIVILEGE, cast(:USERNAME as VARCHAR(32)) as USERNAME,' + 'P.RDB$USER,RDB$PRIVILEGE, cast(:SEC$USER_NAME as VARCHAR(32)) as SEC$USER_NAME,' 'Case When RDB$PRIVILEGE is null then 0 else 1 End as GRANTED' 'FROM RDB$ROLES r' 'Left Outer JOIN (' 'Select RDB$RELATION_NAME, RDB$PRIVILEGE, RDB$USER From RDB$USER_PRIVILEGES ' - 'Where RDB$USER = :USERNAME and RDB$PRIVILEGE = ''M''' + 'Where RDB$USER = :SEC$USER_NAME and RDB$PRIVILEGE = ''M''' ') P On P.RDB$RELATION_NAME = r.RDB$ROLE_NAME ' '' ) Params = < item DataType = ftUnknown - Name = 'USERNAME' + Name = 'SEC$USER_NAME' ParamType = ptInput end> UpdateObject = UpdateUserRoles @@ -520,19 +491,19 @@ object DatabaseData: TDatabaseData ParamData = < item DataType = ftUnknown - Name = 'USERNAME' + Name = 'SEC$USER_NAME' ParamType = ptInput end> end object UpdateUserRoles: TIBUpdate RefreshSQL.Strings = ( 'SELECT r.RDB$ROLE_NAME, r.RDB$OWNER_NAME, r.RDB$DESCRIPTION, r.RDB$SYSTEM_FLAG,' - 'P.RDB$USER,RDB$PRIVILEGE, cast(:USERNAME as VARCHAR(32)) as USERNAME,' + 'P.RDB$USER,RDB$PRIVILEGE, cast(:SEC$USER_NAME as VARCHAR(32)) as SEC$USER_NAME,' 'Case When RDB$PRIVILEGE is null then 0 else 1 End as GRANTED' 'FROM RDB$ROLES r' 'Left Outer JOIN (' 'Select RDB$RELATION_NAME, RDB$PRIVILEGE, RDB$USER From RDB$USER_PRIVILEGES' - 'Where RDB$USER = :USERNAME and RDB$PRIVILEGE = ''M''' + 'Where RDB$USER = :SEC$USER_NAME and RDB$PRIVILEGE = ''M''' ') P On P.RDB$RELATION_NAME = r.RDB$ROLE_NAME' 'Where r.RDB$ROLE_NAME = :RDB$ROLE_NAME' ) @@ -549,9 +520,7 @@ object DatabaseData: TDatabaseData AllowAutoActivateTransaction = False Database = IBDatabase1 Transaction = CurrentTransaction - AfterDelete = UserListAfterPost AfterInsert = UserTagsAfterInsert - AfterPost = UserListAfterPost BufferChunks = 1000 CachedUpdates = False DataSource = UserListSource @@ -561,12 +530,12 @@ object DatabaseData: TDatabaseData 'Select a.SEC$USER_NAME, A.SEC$KEY, A.SEC$VALUE' 'From' 'SEC$USER_ATTRIBUTES A' - 'Where SEC$USER_NAME = :UserName' + 'Where SEC$USER_NAME = :SEC$USER_NAME' ) Params = < item DataType = ftUnknown - Name = 'UserName' + Name = 'SEC$USER_NAME' ParamType = ptInput end> UpdateObject = TagsUpdate @@ -576,7 +545,7 @@ object DatabaseData: TDatabaseData ParamData = < item DataType = ftUnknown - Name = 'UserName' + Name = 'SEC$USER_NAME' ParamType = ptInput end> end @@ -596,83 +565,6 @@ object DatabaseData: TDatabaseData left = 304 top = 360 end - object LegacyUserList: TMemDataset - FieldDefs = < - item - Name = 'USERID' - DataType = ftInteger - end - item - Name = 'GROUPID' - DataType = ftInteger - end - item - Name = 'USERNAME' - DataType = ftString - Size = 32 - end - item - Name = 'SEC$FIRST_NAME' - DataType = ftString - Size = 32 - end - item - Name = 'SEC$MIDDLE_NAME' - DataType = ftString - Size = 32 - end - item - Name = 'SEC$LAST_NAME' - DataType = ftString - Size = 32 - end - item - Name = 'USERPASSWORD' - DataType = ftString - Size = 32 - end - item - Name = 'SEC$ADMIN' - DataType = ftBoolean - end - item - Name = 'SEC$PLUGIN' - DataType = ftString - Size = 31 - end - item - Name = 'SEC$ACTIVE' - DataType = ftBoolean - end - item - Name = 'LOGGEDIN' - DataType = ftBoolean - end - item - Name = 'DBCREATOR' - DataType = ftBoolean - end> - AfterOpen = LegacyUserListAfterOpen - BeforeClose = LegacyUserListBeforeClose - AfterInsert = UserListAfterInsert - BeforePost = LegacyUserListBeforePost - AfterPost = UserListAfterPost - BeforeDelete = LegacyUserListBeforeDelete - AfterDelete = UserListAfterPost - left = 520 - top = 416 - end - object IBSecurityService1: TIBSecurityService - ServerName = 'localhost' - Protocol = TCP - TraceFlags = [] - SecurityAction = ActionAddUser - UserID = 0 - GroupID = 0 - AdminRole = False - left = 48 - top = 432 - end object Attachments: TIBQuery AllowAutoActivateTransaction = False Database = IBDatabase1 @@ -1001,65 +893,6 @@ object DatabaseData: TDatabaseData left = 376 top = 432 end - object IBValidationService1: TIBValidationService - TraceFlags = [] - Options = [ValidateFull] - GlobalAction = CommitGlobal - left = 168 - top = 432 - end - object IBOnlineValidationService1: TIBOnlineValidationService - TraceFlags = [] - left = 64 - top = 498 - end - object InLimboList: TMemDataset - FieldDefs = < - item - Name = 'TransactionID' - DataType = ftInteger - end - item - Name = 'TransactionType' - DataType = ftString - Size = 16 - end - item - Name = 'HostSite' - DataType = ftString - Size = 256 - end - item - Name = 'RemoteSite' - DataType = ftString - Size = 256 - end - item - Name = 'DatabasePath' - DataType = ftString - Size = 256 - end - item - Name = 'State' - DataType = ftString - Size = 32 - end - item - Name = 'RecommendedAction' - DataType = ftString - Size = 32 - end - item - Name = 'RequestedAction' - DataType = ftString - Size = 32 - end> - AfterOpen = InLimboListAfterOpen - BeforeClose = InLimboListBeforeClose - BeforePost = InLimboListBeforePost - left = 224 - top = 498 - end object AdminUserQuery: TIBSQL Database = IBDatabase1 GenerateParamNames = False @@ -1353,4 +1186,194 @@ object DatabaseData: TDatabaseData ParamType = ptInput end> end + object IBXServicesConnection1: TIBXServicesConnection + Connected = False + OnLogin = IBXServicesConnection1Login + Params.Strings = ( + 'sql_role_name=RDB$ADMIN' + ) + TraceFlags = [] + left = 640 + top = 48 + end + object IBStatisticalService1: TIBXStatisticalService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + Options = [HeaderPages] + left = 48 + top = 287 + end + object IBConfigService1: TIBXConfigService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + left = 168 + top = 283 + end + object IBServerProperties1: TIBXServerProperties + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + left = 40 + top = 365 + end + object IBLogService1: TIBXLogService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + left = 168 + top = 365 + end + object IBSecurityService1: TIBXSecurityService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + UserID = 0 + GroupID = 0 + AdminRole = False + left = 36 + top = 437 + end + object IBValidationService1: TIBXValidationService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + OnGetNextLine = IBValidationService1GetNextLine + Options = [ValidateFull] + left = 632 + top = 416 + end + object IBOnlineValidationService1: TIBXOnlineValidationService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + OnGetNextLine = IBValidationService1GetNextLine + left = 40 + top = 503 + end + object LegacyUserList: TIBXServicesUserList + FieldDefs = < + item + Name = 'UserID' + DataType = ftInteger + Precision = -1 + end + item + Name = 'GroupID' + DataType = ftInteger + Precision = -1 + end + item + Name = 'SEC$USER_NAME' + DataType = ftString + Precision = -1 + Size = 31 + end + item + Name = 'SEC$FIRST_NAME' + DataType = ftString + Precision = -1 + Size = 32 + end + item + Name = 'SEC$MIDDLE_NAME' + DataType = ftString + Precision = -1 + Size = 32 + end + item + Name = 'SEC$LAST_NAME' + DataType = ftString + Precision = -1 + Size = 32 + end + item + Name = 'SEC$PASSWORD' + DataType = ftString + Precision = -1 + Size = 32 + end + item + Name = 'SEC$ADMIN' + DataType = ftBoolean + Precision = -1 + end + item + Name = 'SEC$PLUGIN' + DataType = ftString + Size = 21 + end + item + Name = 'SEC$ACTIVE' + DataType = ftBoolean + end + item + Name = 'LOGGEDIN' + DataType = ftBoolean + end + item + Name = 'DBCREATOR' + DataType = ftBoolean + end> + AfterOpen = LegacyUserListAfterOpen + BeforeClose = LegacyUserListBeforeClose + AfterInsert = UserListAfterInsert + Source = IBSecurityService1 + left = 167 + top = 438 + end + object InLimboList: TIBXServicesLimboTransactionsList + FieldDefs = < + item + Name = 'TransactionID' + DataType = ftInteger + Precision = -1 + end + item + Name = 'TransactionType' + DataType = ftString + Precision = -1 + Size = 16 + end + item + Name = 'HostSite' + DataType = ftString + Precision = -1 + Size = 256 + end + item + Name = 'RemoteSite' + DataType = ftString + Precision = -1 + Size = 256 + end + item + Name = 'DatabasePath' + DataType = ftString + Precision = -1 + Size = 256 + end + item + Name = 'State' + DataType = ftString + Precision = -1 + Size = 32 + end + item + Name = 'RecommendedAction' + DataType = ftString + Precision = -1 + Size = 32 + end + item + Name = 'RequestedAction' + DataType = ftString + Precision = -1 + Size = 32 + end> + Source = IBLimboTrans + left = 296 + top = 496 + end + object IBLimboTrans: TIBXLimboTransactionResolutionService + ServicesConnection = IBXServicesConnection1 + TraceFlags = [] + GlobalAction = CommitGlobal + left = 176 + top = 496 + end end