Tôi đã cố gắng để thiết lập các thuộc tính tùy chỉnh người dùng hoặc các thuộc tính sử dụng auth.updateProfile
phương pháp nhưng nó chỉ lưu displayName
tài sản bởi vì nó đề cập trong nó docs:Angular2 căn cứ hỏa lực Set tài Tuỳ chỉnh Propertise
this.af.auth.createUser({
email: formData.value.email,
password: formData.value.password,
}).then((user) => {
let userProfile = formData.value;
userProfile.role = AuthService.ROLE_PATIENT;
userProfile.displayName = `${formData.value.firstName} ${formData.value.lastName}`;
user.auth.updateProfile(userProfile).then(function(){
this.router.navigate(['/']);
});
Bây giờ vấn đề như thế nào tôi có thể thiết lập các thuộc tính tùy chỉnh của người dùng để tôi có thể nhận chúng trong FirebaseAuthState
Câu hỏi: Tại sao tôi cần lưu thuộc tính tùy chỉnh với từng người dùng?
trả lời: Bởi vì tôi đang làm việc với Auth Guard để kích hoạt một con đường đặc biệt sử dụng role
tài sản đó được lưu trong cơ sở dữ liệu ví dụ:
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
//Currently I'm using this which only check that user is logged in or not
return this.auth
.take(1)
.map((authState: FirebaseAuthState) => !!authState)
.do(authenticated => {
if (!authenticated) this.router.navigate(['/login']);
});
}
Nhưng tôi muốn một séc hơn để xác nhận người dùng có vai trò của bệnh nhân mà tôi đã lưu khi tạo người dùng ở trên, ví dụ: return user.role == 'patient'
Bảng điều khiển Firebase và Bảng điều khiển đám mây của Google sử dụng các quyền và vai trò cơ bản giống nhau. Ở cấp độ cao, đây là chủ sở hữu, người chỉnh sửa và người xem. –
sẽ không giải quyết được vấn đề của tôi, bạn có thể có một giải pháp hay lý thuyết phù hợp để đóng vai trò cụ thể không? –
Bạn không thể kết hợp chúng với nhau được không? – Chrillewoodz