2013-09-26 18 views
9

Został utworzony formularz dla użytkowników, aby aktualizować swoje profile. Kiedy przesyłam formularz, otrzymuję błąd [403].Aktualizacja Meteor.users

Not permitted. Untrusted code may only update documents by ID.

Moje pytanie brzmi, czy mam zamiar użyć Meteor.users.allow, gdzie - w jakim pliku/katalogu - mogę napisać ten kod?

Dzięki Nathan

+0

Czy mógłbyś napisać swój kod ?? Sprawi to, że bardziej zrozumiemy nas. –

Odpowiedz

17

Błąd dostajesz nie jest wynikiem twoich pozwalają/deny zasad. Otrzymasz prosty błąd "Odmowa dostępu", jeśli był.

Podczas aktualizacji użytkowników (jak również posiadania prawidłowych reguł allow), musisz zaktualizować swojego użytkownika poprzez ich _id - zwłaszcza jeśli są one aktualizowane po stronie klienta.

Więc zamiast

Meteor.users.update({name: "etc"}, {$set:..}); 

Trzeba podzielić ją na dwie części, jedna uzyskać _id a następnie jeden zaktualizować dokument w tej sprawie.

var user = Meteor.users.findOne({name: 'etc'}); 

Meteor.users.update({_id: user._id}, {$set:..}); 

Zasadą jest na kliencie można wykorzystać tylko _id znaleźć dokumentu podczas aktualizacji.

+0

Dzięki @Akshat. Przeczytałem ten błąd, ale byłem uparty, sądząc, że jest na to sposób. Jeszcze jedno pytanie, gdzie byłoby to dobre miejsce, aby umieścić moje 'allow' zasady' kolekcji users'? – Nathan

+0

Musisz upewnić się, że działają na serwerze, więc w pliku js w katalogu głównym lub katalogu '/ server'. – Akshat

+10

nie potrzebujesz jawnego wywołania 'Meteor.users.findOne();'. 'Meteor.users.update ({_id: Meteor.userId()}, {$ set: { 'profile.online': true}});' wystarczy jak można wywołać 'Meteor.userId()' razu. – Tom