2013-05-03 4 views
0

Я создаю приложение в Google Apps Script. Я проверяю пользователей домена, проверяя, разрешено ли их logonid использовать приложение. Я разработал его, и когда я вошел в стадию тестирования, я был единственным пользователем, который действительно мог использовать приложение. Хотя я установил комбобокс «Кто имеет доступ» в мастере публикации веб-приложений «кому угодно».Пользователи не имеют доступа к приложению

Когда пользователь выполняет приложение, он получит исключение, говоря, что у него нет доступа при выполнении первой функции после doGet(). Я упустил некоторые настройки или сделал что-то неправильно?

Я использую следующие классы:

UserManager 
Session 
Jdbc 
Utilities 
Logger 

Это функция, которая вызывается после функции doGet():

function authenticateUser() { 
    try { 
    var user = UserManager.getUser(Session.getActiveUser()); 
    Logger.log('User: ' + user.getEmail()); 
    if (user == undefined || user == null) { 
     return {authenticated: false}; 
    } else { 
     var auth = _getAuth(); 
     if (!auth.isAuthorized(user.getEmail())) { 
     Logger.log('Not authorized in database.'); 
     return {authenticated: false}; 
     } else { 
     var profile = auth.getProfile(user.getEmail()); 
     authenticated = true; 
     auth.setLogin(user.getEmail()); 
     if(!profile.firstLogin) { 
      activeProfile = profile; 
     } 
     activeUser = user; 
     return {profile: profile, authenticated: true}; 
     } 
    } 
    } catch(ex) { 
    Logger.log(ex); 
    return {authenticated: false}; 
    } 
} 
+1

так что «кто-нибудь» может его выполнить, что вы установили в поле «Execute App As»? Я предполагаю, что «пользователь обращается к приложению». Что делает первая функция после doGet()? вызвать таблицу? – miturbe

+0

Да, за заметку о милурбе вы, скорее всего, что-то делаете в коде, к которому пользователь доступа не имеет доступа. Они могут получить доступ к веб-приложению, но не смогут ничего с ним делать, поскольку могут обращаться к ресурсам (файлам, таблицам и т. Д.), К которым пользователь не может получить доступ. –

+0

Он Доступ к базе данных MySQL и проверяет, имеет ли пользователь доступ к скрипту. Я также использую класс 'User' для доступа к имени пользователя. В самом деле поле установлено в «Пользователь, получающий доступ к приложению». – Feanaro

ответ

1

Доступ к UserManager является вопрос здесь. Как указано в documentation, UserManager доступен только администраторам.

Если приложение работает как обычный пользователь, он не может получить доступ к UserManager. Возможно, вам придется перевернуть развертывание/код, чтобы запустить его как самостоятельно (или администратора).

+0

Спасибо! Ты действительно помог мне на этом! – Feanaro

Смежные вопросы