2015-01-24 4 views
1

Я пытаюсь извлечь две строки из класса Parse Customers. Я хочу сравнить эти строки (usernameAdmin и passwordAdmin соответственно) с введенным пользователем введенным полем, и если они совпадут, они перейдут на определенную страницу.Извлечение строк в Parse

Я использую этот подход по определенной причине и буду благодарен за обратную связь.

$scope.logIn = function(form) { 

    var Customer = Parse.Object.extend("Customers"); 

    parseAdminUsername = Customer.get('usernameAdmin'); 
    parseAdminPassword = Customer.get('passwordAdmin'); 



    if (form.lusername == parseAdminUsername && form.lpassword == parseAdminPassword) { 

     window.location = 'adminSelect.php' 
    } else { 
    alert('error'); 
} 

    }; 

HTML-код выглядит следующим образом:

<form role="form" ng-show="scenario == 'Sign up'"> 
<h4 id="wrongCredentials"></h4> 
<input id="signupformItem" ng-model="user.lusername" type="email" name="email" placeholder="Email Address"> <br> 
<input id="signupformItem" ng-model="user.lpassword" type="password" name="password" placeholder=" Password"> <br> 

<br> 
<button id="signupbuttonFinal" ng-click="logIn(user)" class="btn btn-danger"> Sign In</button> 

</form> 

я получаю следующее сообщение об ошибке на консоли:

undefined is not a function 
    at Object.$scope.logIn 

ниже линии

parseAdminUsername = Customer.get('usernameAdmin'); 
+0

Невозможно придумать какую-либо обоснованную причину, чтобы когда-либо иметь пароль, отправленный клиенту. У Parse есть система управления пользователями на основе ролей, используйте это вместо – charlietfl

+0

, потому что я хотел разделить между пользователями и администратором. Где parse.user хранит всю мою информацию о пользователе, и я создал отдельный класс только для работы с администратором, но проблема с Parse заключается в том, что у вас нет двух классов пользователей. – Jon

+0

Почему вы не можете использовать роли? – charlietfl

ответ

0

Вы лучше вместо использования Parse для встроенных пользователей создания отдельного объекта, а затем вы должны использовать Parse.User.logIn.

Если бы вы вместо этого использовали свой стол. Customer.get('usernameAdmin') используется для возврата поля после выполнения запроса для возврата записей/с. Вы лучше выполнить запрос поиска, чтобы проверить имя пользователя и пароль, как так:

var Customer = Parse.Object.extend("Customers"); 
var query = new Parse.Query(Customer); 
query.equalTo("usernameAdmin", form.lusername); 
query.equalTo("passwordAdmin", form.lpassword); 

query.find({ 
    success: function(results) { 
    if (results.length > 0) { 
     window.location = 'adminSelect.php'; 
    } 
    }, 
    error: function(error) { 
    // The object was not retrieved successfully. 
    // error is a Parse.Error with an error code and message. 
    } 
}); 

Я бы рекомендовал не использовать window и вместо $ окна, так что вы можете модульное тестирование коды. Еще лучше использовать угловую маршрутизацию и создать одностраничное приложение.

+0

Спасибо за ваше предложение, и ваш ответ был невероятно полезен. Причина, по которой я не использую Parse.User.Login, состоит в том, что я создал два разных класса - «Пользователи» и «Администратор», где Parse.User используется для хранения даты пользователя и этого для администратора (у вас не должно быть двух специальных классов пользователя в синтаксическом анализе) , Один вопрос, однако, на странице adminSelect, я бы хотел, чтобы те, кто успешно вошли в систему, могли просматривать его с помощью углового и parse.user, я могу делать $ scope.currentUser = Parse.User.current(); – Jon

+0

Смотрите, это проблема с тем, что вы выбрали. Это будет не очень безопасно, потому что вам нужно будет хранить, если пользователь зарегистрирован на сервере, а не на клиенте. Для этого вам придется писать код на стороне сервера Parse. Вместо этого вы должны использовать встроенный пользователь Parse, поскольку он будет обрабатывать это для вас. Если вы хотите иметь разные роли, используйте https://www.parse.com/docs/js_guide#roles. Там есть пример, где есть роль администратора –

+0

Я согласен, но количество администраторов ограничено, и процесс администрирования для администратора не будет, поскольку я их вручную добавлю, и учитывая, что нет регистрации, имеющей доступ к их паролю важно, поскольку они являются handpick, и только у меня есть доступ к анализу. Я знаю роли, но я чувствую, что это лучше организовано именно так. Для страницы администратора, чтобы увидеть, что пользователь или нет, у пользователя есть логин. Я думал об обходном пути l – Jon

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