Я хочу создать приложение, в котором только человек, который аутентифицирован в firebase, впервые введя свой адрес электронной почты и пароль через приложение, может изменить или добавить данные / видео в firebase, но другой пользователь, который не аутентифицирован и используют приложение, могут только читать / смотреть видео, добавленные администратором.
{
"rules": {
".read": true,
".write": "auth.uid === 'userID'"
}
}
Выше приведен код firebase. Проще говоря, я просто хочу знать, что userId
будет автоматически заменен фактическим идентификатором пользователя, скажем 'adjkekloudh'
, или нам нужно написать любой код в java, если да, то что, пожалуйста, помогите
Это код java, который я использовал, когда правила в firebase опубликованы. c предназначен для всех, кто аутентифицирован, но я хочу, чтобы только администратор оставался аутентифицированным, а пользователь без аутентификации / loign / signup мог смотреть видео.
public class MainActivity extends AppCompatActivity {
private FirebaseDatabase database;
private DatabaseReference databaseReference;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private static final String TAG = "MainActivity";
private EditText email;
private EditText password;
private Button login;
private Button signUp;
private Button iamUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
email = (EditText) findViewById(R.id.ETemailaddressID);
password = (EditText) findViewById(R.id.ETPasswordID);
login =(Button) findViewById(R.id.loginBtnID);
signUp =(Button) findViewById(R.id.signUpBtnID);
iamUser = (Button) findViewById(R.id.iamUserID);
mAuth = FirebaseAuth.getInstance();
FirebaseDatabase database = FirebaseDatabase.getInstance();
//final DatabaseReference mref = database.getReference("message");
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user != null){
// user is singned in
Toast.makeText(MainActivity.this,"Signed In",Toast.LENGTH_LONG).show();
}
else{
// user is not signed in
Toast.makeText(MainActivity.this,"No such user exists!",Toast.LENGTH_LONG).show();
}
}
};
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String emailString = email.getText().toString();
String pwd = password.getText().toString();
if(!emailString.equals("") && !pwd.equals("")){
mAuth.signInWithEmailAndPassword(emailString,pwd)
.addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(!task.isSuccessful()){
Toast.makeText(MainActivity.this,"Wrong email or password",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"Signed In",Toast.LENGTH_LONG).show();
// we can now write to database
// Customer customer = new Customer("Disha","sonalname@gmail.com","Namdev",19);
// mref.setValue(customer);
Intent intent = new Intent(MainActivity.this, UploadVideo.class);
startActivity(intent);
finish();
}
}
});
}
}
});
signUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, SignUpActivity.class));
}
});
iamUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, ShowVideoActivity.class));
}
});
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
protected void onStop() {
super.onStop();
if(mAuthListener != null){
mAuth.removeAuthStateListener(mAuthListener);
}
}
}
ПРИМЕЧАНИЕ. Здесь кнопка регистрации предназначена для администратора / начальника, который в первый раз введет свой адрес электронной почты и пароль, а кнопка входа снова предназначена для администратора, чтобы добавить данные в firebase, а кнопка i_am_user предназначена для пользователю, чтобы он мог напрямую go к списку видео, добавленных администратором.