powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / что нужно намэпить?
17 сообщений из 17, страница 1 из 1
что нужно намэпить?
    #36438241
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите кто в курсе
какие классы и глобали нужно намэпить на рабочую область для того что бы можно было пользоваться методами создания нового пользователя, назначения ему ролей, ввод ресурсов ?
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36442786
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007подскажите кто в курсе
какие классы и глобали нужно намэпить на рабочую область для того что бы можно было пользоваться методами создания нового пользователя, назначения ему ролей, ввод ресурсов ?
Все эти данные хранятся в области %SYS в индексной глобали ^SYS (см. sySecurity.INC). И функции запускаются из системных классов.
В чем именно проблема?
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36446437
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно организовать работу администратора БД (создать/удалить/отключить нового пользователя, создать/удалить ресурс) непосредственно из текущего проекта
причина: говорят что переключение нэймспейсов - не хорошее дело
хотя сейчас пытаюсь реализовать все через try-catch
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36446469
I.Borisova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мапить нужно пакет Security
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36447347
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
I.Borisova,

это я догадался, а глобали какие?
или они вместе с пакетом?
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36447893
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Глобали не нужно отображать. Но нужно, чтобы у пользователя Cache, под которым выполняется код в вашей области, в ролях был ресурс %DB_CACHESYS и, возможно, еще ряд ресурсов в зависимости от используемых функций (см. описание классов в пакете Security).
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36463711
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,
сделал как Вы посоветовали, но
результата нет
т.е. например вывожу список ресурсов, а он пустой
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36463742
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,

что посоветуете?
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36463763
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,

у меня Cache 2009.1.3.704
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36465153
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007Turk,
сделал как Вы посоветовали, но
результата нет
т.е. например вывожу список ресурсов, а он пустой
Вы каким образом список получаете? Вот мой код, например:
Код: plaintext
1.
2.
3.
4.
s rs = ##class(%ResultSet).%New("Security.Resources:List")
d rs.Execute("*",- 1 ,- 1 )
f { q:('rs.Next())  w "Name="_rs.Get("Name"),! }
k rs
В Security-классах есть немало методов, где результат возвращается в одном из параметров. Причем результат является массивом. Например:
Код: plaintext
1.
2.
3.
w ##class(Security.Users).Get(<имя_пользователя>,.Prop)
w Prop  ; пустая строка
zw Prop  ; параметры пользователя в узлах массива

P.S.:
Cache for Windows (x86-32) 2009.1.1 (Build 504) Wed Aug 26 2009 01:43:16 EDT
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36466054
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,

спасибо
уже разобрался
необходимо было предоставить пользователю привилегии на таблицы
НО
внезапно возникла проблема, если имя пакета содержит букву в нижнем регистре, то в списке доступных схем этот пакет не отображается
проблема решилась AdHoc - ком
теперь пытаюсь написать программу автоматического прописывания одной из ролей всех превилегий на все хранимые классы в проекте.
нашел как это сделать применительно к пользователю

если кто знает как сие отработать относительно роли - сообщите пожалуйста
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36470799
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007
НО
внезапно возникла проблема, если имя пакета содержит букву в нижнем регистре, то в списке доступных схем этот пакет не отображается
проблема решилась AdHoc - ком

Столкнулись с такой же проблемой еще в прошлом году. Пока дождались AdHoc-а, успели привыкнуть к GRANT-у.

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.
GrantPriv(namespace, project, grantee, priv="*") [ SQLCODE, ClassList, project, namespace ] PUBLIC
{
s SQLCODE =  0 
&sql(SELECT LIST(DictCls.SqlQualifiedNameQ) INTO :ClassList
	FROM %Dictionary.CompiledClass DictCls,
		(SELECT Name FROM %Studio.ProjectItem WHERE (Project = :project) AND (type = 'CLS')) PrjCls
	WHERE (DictCls.CompileNamespace = :namespace)
		AND (DictCls.ClassType = 'persistent' OR DictCls.ClassType = 'view')
		AND (DictCls.ID = PrjCls.Name)
	)
if (SQLCODE '= 0)
{
	w "Ошибка SQL: SQLCODE="_SQLCODE,!
	q 0
}
#;
s SQLCODE = 0
s rs = ##class(%ResultSet).%New("%DynamicQuery:SQL")
s sc = rs.Prepare("GRANT "_priv_" ON "_ClassList_" TO "_grantee)
s:($$$ISOK(sc)) sc = rs.Execute()
k rs
#;
if ($$$ISERR(sc)) && (SQLCODE '=  0 ) && (SQLCODE '=  100 )
{
	w "Ошибка GRANT: StatusCode="_sc,!
	q  0 
}
#;
q  1 
}
Примечания:
1. namespace должно быть в виде "<имя_машины>:<имя_CACHE>^<имя_области>".
2. Если не нужны SQL-отображения, то можно нужно убрать условие (DictCls.ClassType = 'view').
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36471973
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если автор не против, размещусь в его теме.

- Делаю компоненты\движек в области скажем COMP
- Делаю область для проекта скажем PRJ
- Делаю мэпинг для области PRJ пакетов и глобалов из области COMP

В области PRJ я имею доступ к данным из области COMP, но компоненты "не видятся" (ошибка при компиляции: "ОШИБКА #6235: Непредвиденная область для тега ...").

Что нужно "намэпить" еще ? или что прописать, что бы были видны компоненты ?
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36472207
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2acid,

я не против,
но в Вашем случае это не заслуга мэпинга, это недоописание, если можно так выразится.
скорее всего Вы используете собственные компоненты, если да то нужно прописать дополнительный xmlns в теге <page>
например xmlns:demo="http://www.intersystems.com/zendemo , это при условии что в компоненте у Вас прописано:
Код: plaintext
1.
2.
3.
4.
5.
6.
Class WEB.Component.gbDataCombo Extends %ZEN.Component.dataCombo
{

/// This is the XML namespace for this component.
Parameter NAMESPACE = "http://www.intersystems.com/zendemo";
....
}
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36472252
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
замэпил еще глобал oddXML и компоненты стали доступны. Не знаю на сколько это правильный шаг ...
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36472258
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka20072acid,

я не против,
но в Вашем случае это не заслуга мэпинга, это недоописание, если можно так выразится.
скорее всего Вы используете собственные компоненты, если да то нужно прописать дополнительный xmlns в теге <page>
например xmlns:demo="http://www.intersystems.com/zendemo , это при условии что в компоненте у Вас прописано:
Код: plaintext
1.
2.
3.
4.
5.
6.
Class WEB.Component.gbDataCombo Extends %ZEN.Component.dataCombo
{

/// This is the XML namespace for this component.
Parameter NAMESPACE = "http://www.intersystems.com/zendemo";
....
}


это как раз прописано, и параметр NAMESPACE заполнен у кажого компонента, и схема в page указана.
...
Рейтинг: 0 / 0
что нужно намэпить?
    #36472302
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может лучше сделать так:

1. создать БД1 для программ, классов
2. создать БД2 для глобалов
3. создать ОБЛАСТЬ,
4. [Домашняя страница] > [Конфигурация] > [Области] > [Редактировать область]
прописать БД1 - для программ
прописать БД2 - для глобалов
5. остальное размэпить как нужно

у меня так и работает нормально
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / что нужно намэпить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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