powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Научите как пользоваться resource...
25 сообщений из 68, страница 2 из 3
Научите как пользоваться resource...
    #36470389
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запихал все - увидал таки страничку родимую!!!
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470410
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaОшибка: <PROTECT>%Log+1^%ZEN.Utils.1 ^%ISC.ZENLOG,c:\intersystems\cache\mgr\

Как я понимаю, не хватает доступа к базе, куда пишется лог - видать, в CACHESYS (но не уверен)

Дайте ресурс %DB_CACHESYS - м.б. и поможет

krvsaА это как и где?
Такое ренее вообще не настраивал и не проверял...

Конфигурация - Управление ЦСП-шлюзом - Проверить соединение с сервером

Если в адресе обнаружится порт (типа http:localhost:57772), а в ЦСП ходите без порта (вернее, на 80-й) то нужно порт вытереть из адреса
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470427
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Еще забыл сказать - в роль нужно добавить права на таблицы и процедуры (с учетом области) это в роли закладочка такая....
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470439
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovЕще забыл сказать - в роль нужно добавить права на таблицы и процедуры (с учетом области) это в роли закладочка такая....
Закладку видел... Я думал это будет т.с. вторая серия.

Видно рано я порадовался... Решил "усложнить" пример! Добавил вторую кнопку с другим ресурсом...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
/// tmp
Class uch.ZEN.tmp Extends %ZEN.Component.page
{

/// Class name of application this page belongs to.
Parameter APPLICATION = "uch.ZEN.App";

/// Displayed name of this page.
Parameter PAGENAME = "tmp";

/// Domain used for localization.
Parameter DOMAIN = "";

/// This Style block contains page-specific CSS style definitions.
XData Style
{
<style type="text/css">
</style>
}
/// This XML block defines the contents of this page.
XData Contents [XMLNamespace="http://www.intersystems.com/zen"]
{
<page xmlns="http://www.intersystems.com/zen" title="">
	<html>
		<p>Пример работы ресурсов</p>
	</html>
	<button id="btAdm" caption="ADM" resource="UCH_ADM" />
	<button id="btUser" caption="USER" resource="UCH_USER" />
</page>
}
}

Но как бы я не логинился Админом или Юзером - всегда вижу обе кнопки. Где опять у меня что-то не так?
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470478
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
Есть класс class %CSP.UI.Portal.ColumnPriv он унаследован от %ZEN.Component.page (более подоробно посмотрите в Class Reference). Применяя данный класс можно управлять доступом как к таблице так и к отдельному столбцу таблицы.

Пример вызова.

Method rowLincSQLTlb() [ Language = javascript ]
{
var table = this.getComponentById('table');
var index = table.getProperty('selectedIndex');
if (index == -1)
{
alert("Виберіть запис та повторіть дію!");
return;
}
var data = table.getRowData(index);
var id = data.ID;
var Grantee = data.Name;
zenPage.launchPopupWindow(
zenLink('%CSP.UI.Portal.ColumnPriv.cls?$ID1='+Grantee+'&NAMESPACE=CIVICRESPONSIBILITY&ObjectType=TABLE&tab=4&IncludeSystem=0'),'',
'status,scrollbars,resizable=no,modal=yes,width=840,height=660');
}
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470483
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuraM , мне бы с кнопочками пока разобраться... С таблицами потом...
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470600
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Выведите имя текущего пользователя и его роли:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
<html align="center"><h2>Пример работы ресурсов</h2></html>
<html align="center" OnDrawContent="DrawMessage"/>
...
</page>
}

Method DrawMessage(pSeed As %String) As %Status
{
  &html<<h1>Пользователь: #($UserName)#</h1>>
  &html<<h1>Его роли: #($ROLES)#</h1>>
  Quit $$$OK
}
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470605
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007,
Чуток перепутал с адресатом, кому надо было ответить (написал для krsva).
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470611
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krsva!
Извените не с тем ответом к Вам "влез"... Перепутал....http://www.sql.ru/forum/images/biggrin.gif
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470624
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuraM,

ничего страшного, я уже прочел
это то понятно что можно использовать, но вопрос
как это сделать программным образом???
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470643
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
этот класс только для столбцов таблиц ('%CSP.UI.Portal.ColumnPriv.cls)
а для таблиц? какой

krvsa, извини что параллелим, может кому понадобится
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36470910
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007,
Таким образом добавляю программно
addSQLTable()
s pNamespace="CIVICRESPONSIBILITY"
s pObjName=""
s pGrantee="t222" ;роль или пользователь
s pObjectType="TABLE"
s pSchema="DATA_ACCOUNTING"
s pTable="Register"
s pColumns="Quantity"
s pPrivs=",1,2,3,4" ;1="s",2="i",3="u",4="r"
s pGrants=""
s pRevoke=0
s pIncludeSystem=0
s tSC = ##class(%CSP.UI.Portal.ColumnPriv).SaveData(pNamespace, pObjName, pGrantee, pObjectType, pSchema, pTable, pColumns, pPrivs, pGrants, pRevoke, pIncludeSystem)
q tSC

Отдельно для таблицы я не нашел, но можно и через этот класс добавить туже таблицу (конечно надо указывать какие столбцы из таблицы будут добавляться).

Надо "порыть" класс %SQL.Manager.API (класс метод SaveData из %CSP.UI.Portal.ColumnPriv использует Set tSC = ##class(%SQL.Manager.API).SaveObjPriv(acts(priv), nType, pObjName, pGrantee, 0, 1, .SQLCODE, .sMsg, GrantedBy, .fields)
)

Может через него можно будет добавить только таблицу...
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471033
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007,
class %SQL.Manager.API extends %RegisteredObject

This is a system class that allows control of the Cache SQL environment.
Used by SQL Manager.

classmethod SaveObjPriv(acts As %String, type As %Integer, objs As %String, users As %String, g, revoke As %Integer, ByRef SQLCODE As %Integer, ByRef %msg As %String, GrantedBy As %String = "", ByRef fields As %String = "") as %Status

Parameters: acts - actions to grant. * for all actions a for Alter s for Select i for Insert u for Update d for Delete r for References or any combination type - "1" for table, "3" for view, "9" for procedure objs - name of the table or view users - comma delimited list of users g - 0/1 for WITH GRANT OPTION revoke - 1 if revoke (-1 otherwise) SQLCODE - Passed by reference. Returns SQLCODE contains 0 (success) or number < 0 (error) %msg - Passed by reference. If SQLCODE<0, contains error message. GrantedBy - Who the privilege was granted by. If revoke, revoke from user it was granted by fields - optional, $List of field names to grant or revoke the privs on the objs

Т.е. если использовать этот класс-метод то можно сохранить всю таблицу сразу же, а не по колонкам...
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471040
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007,

Код SaveData

ClassMethod SaveData(pNamespace, pObjName, pGrantee, pObjectType, pSchema, pTable, pColumns = "", pPrivs = "", pGrants = "", pRevoke, pIncludeSystem) As %String [ ZenMethod ]
{

Set $ZT="Error"
Set tResult = ""
Do {
Set GrantedBy = $Username
Set nType = $S(pObjectType="TABLE":1,pObjectType="VIEW":3,1:9)
Set currentNamespace = $zu(5)
If pNamespace '= "",pNamespace '= currentNamespace ZN pNamespace
If pObjName = "" Set pObjName = pSchema _ "." _ pTable
#; If it is revoke all, gather all columns now
If pRevoke = 1,pColumns = "*" Set pColumns = ..GetColumns(pGrantee, pSchema, pTable, pIncludeSystem) Quit:pColumns=""
#; Set columns into $list
Set fields = ""
For r = 1:1:$L(pColumns,",") Set $li(fields,r) = $P(pColumns,",",r)
#; parse out the privileges
Set acts(1)="s",acts(2)="i",acts(3)="u",acts(4)="r"
Set tRow = 2
Set priv = $P(pPrivs,",",tRow)
;&js<alert("#(pPrivs)#");>
;&js<alert("#(priv)#");>
;q
s aa=acts(1)
#; for every priv, grant the privilege:
While priv '= "" {
#; first remove all privileges then save the ones user selected.
Set tSC = ##class(%SQL.Manager.API).SaveObjPriv(acts(priv), nType, pObjName, pGrantee, 0, 1, .SQLCODE, .sMsg, GrantedBy, .fields)

;&js<alert("#(SQLCODE)#");>
If $$$ISERR(tSC) Set tResult = $ZCVT($System.Status.GetErrorText(tSC),"O","HTML") Quit
If SQLCODE '= 0 Set tResult = tResult _ pObjName _ $$$TextHTML("Save failed. Could not remove existing privilege.")_" "_sMsg_"</br>" Quit
Set nGrant = pGrants [ priv

#;s ^%yan("priv",priv)=acts(priv)_"^"_nType_"^"_pObjName_"^"_pGrantee_"^"_nGrant_"^"_0_"^"_GrantedBy_"^"_fields
Set tSC = ##class(%SQL.Manager.API).SaveObjPriv(acts(priv), nType, pObjName, pGrantee, nGrant, 0, .SQLCODE, .sMsg, GrantedBy, .fields)
If SQLCODE '= 0 Set tResult = tResult _ pObjName _ $$$TextHTML("Save failed. Please make sure that you have sufficient SQL privilege to perform this operation.")_" "_sMsg_"</br>" Quit
Set tRow = tRow + 1
Set priv = $P(pPrivs,",",tRow)
}

If pRevoke = 1 {
Set tSC = ##class(%SQL.Manager.API).SaveObjPriv("*", nType, pObjName, pGrantee, 0, 1, .SQLCODE, .sMsg, GrantedBy, .fields)
}

If SQLCODE '= 0 {
Set tResult = tResult _" ["_SQLCODE_"]"_sMsg_"<br>"
}

ZN currentNamespace

} While 0
Quit tResult
Error ///
Set $ZT="" Do BACK^%ETN
Set tResult = $ZCVT($ZE,"O","HTML")
Quit tResult
}
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471086
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitВыведите имя текущего пользователя и его роли:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
<html align="center"><h2>Пример работы ресурсов</h2></html>
<html align="center" OnDrawContent="DrawMessage"/>
...
</page>
}

Method DrawMessage(pSeed As %String) As %Status
{
  &html<<h1>Пользователь: #($UserName)#</h1>>
  &html<<h1>Его роли: #($ROLES)#</h1>>
  Quit $$$OK
}

Завтра продолжим, спасибо что помогаете... А то тут без бутылки не разобраться...
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471729
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил что советовали...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
/// This XML block defines the contents of this page.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">
	<html>
		<p>Пример работы ресурсов</p>
	</html>
	<html OnDrawContent="DrawMessage"/>
	<button id="btAdm" caption="ADM" resource="UCH_ADM" />
	<button id="btUser" caption="USER" resource="UCH_USER" />
</page>
}
Method DrawMessage(pSeed As %String) As %Status
{
  &html<<p>Пользователь: #($UserName)#</p>>
  &html<<p>Его роли: #($ROLES)#</p>>
  Quit $$$OK
}

Вот что получилось...


----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471743
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот описание самой роли...



Как видно там есть ресурс UCH_ADM
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471864
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Оставьте ресурсы
%DB_%DEFAULT
%DB_CACHESYS
UCH_ADM

остальные удалите. И зайдите в систему под пользователем для которого определена роль UCH_R_ADM.
В этом случае Вы должны видеть только кнопку UCH_ADM.
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471941
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuraMОставьте ресурсы
%DB_%DEFAULT
%DB_CACHESYS
UCH_ADM

остальные удалите.
Сейчас сделаю...

YuraMИ зайдите в систему под пользователем для которого определена роль UCH_R_ADM.
В этом случае Вы должны видеть только кнопку UCH_ADM.
Таки и так только таким вхожу... Входил и тем для кого другая кнопка доступна... Да только видны всегда пока обе.
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471956
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменил роль...



Но так все и осталось...



Хотя и браузеры закрывал... И логинился всякий раз...

Вот описание пользователя.



Куда еще смотреть?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471966
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что интересно... Если например написать вот так

Код: plaintext
1.
<button id="btAdm" caption="ADM" resource="UCH_R_ADM" />
<button id="btUser" caption="USER" resource="UCH_R_USER" />

обе кнопки исчезают!
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36471970
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или так...

Код: plaintext
1.
<button id="btAdm" caption="ADM" resource="UCH_ADM1" />
<button id="btUser" caption="USER" resource="UCH_USER1" />

Т.е. они видны если ресурс вообще существует в описании Каше. И не обязательно привязан к пользователю...
Я так пока понял.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36472026
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Посмотрите профиль пользователя. Какие ресурсы и службы ему доступны. Были случаи(когда при инсталяции Cache' выбирался максимальный уровень безопасности) при добавлении нового пользователя ему присваивался ресурс %All. В списке выбранных ресурсов он отсутсвовал, а в профиле пользователя отображался...
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36472084
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Попробуйте убрать и ресурсы
%DB_%DEFAULT
%DB_CACHESYS

Оставьте только свой ресурс. Без ресурсов %DB_%DEFAULT и %DB_CACHESYS должна возникнуть ошибка на странице.
...
Рейтинг: 0 / 0
Научите как пользоваться resource...
    #36472116
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот что нарыл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
METHODS: SaveObjPriv
FormalSpec: acts:%String,type:%Integer,objs:%String,users:%String,g,revoke:%Integer,&SQLCODE:%Integer,&%msg:%String,GrantedBy:%String="",&fields:%String=""
Description: <blockquote>
Parameters:
acts	    - actions to grant. * for all actions
a for Alter
s for Select
i for Insert
u for Update
d for Delete
r for References
or any combination
type      - "1" for table, "3" for view, "9" for procedure
objs      - name of the table or view
users     - comma delimited list of users
g         -  0 / 1  for WITH GRANT OPTION
revoke    -  1  if revoke (- 1  otherwise)
SQLCODE   - Passed by reference.  Returns SQLCODE
contains  0  (success) or number <  0  (error)
%msg      - Passed by reference.  If SQLCODE< 0 , contains error message.
GrantedBy - Who the privilege was granted by.  If revoke, revoke from user it was granted by
fields    - optional, $List of field names to grant or revoke the privs on the objs
</blockquote>
Code:  
  Set SQLCODE= 0 ,%msg=""
  #; The last parameter is cascade. It's set to zero now.
  If revoke= 1  Do setup1^%SYS.SQLSEC(acts,type,$lb(objs),users,g, 0 ,,,GrantedBy,.fields) QUIT $$$OK 
  // Revoke
  #; The last parameter is %check (check to make sure user has grantable priv)
  Do setup^%SYS.SQLSEC(acts,type,$lb(objs),users,g, 1 ,GrantedBy,.fields)	// Grant
  Quit $$$OK
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 2 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Научите как пользоваться resource...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]