1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package fire
- import (
- "context"
- "errors"
- "strings"
- "time"
- "cloud.google.com/go/firestore"
- firebase "firebase.google.com/go"
- )
- // getContextValue returns value of the specified key from context
- func getContextValue(ctx context.Context, key string) (string, bool) {
- value, ok := ctx.Value(key).(string)
- return value, ok
- }
- // ColRef returns collection reference
- func ColRef(client *firestore.Client, names ...string) *firestore.CollectionRef {
- path := strings.Join(names, "/")
- return client.Collection(path)
- }
- // DocRef returns document reference
- func DocRef(client *firestore.Client, names ...string) *firestore.DocumentRef {
- path := strings.Join(names, "/")
- return client.Doc(path)
- }
- // NowMM returns now time of Myanmar Timezone
- func NowMM() (*time.Time, error) {
- loc, err := time.LoadLocation("Asia/Rangoon")
- if err != nil {
- return nil, err
- }
- //set timezone,
- now := time.Now().In(loc)
- return &now, nil
- }
- // TimestampMilli returns time in milli seconds
- func TimestampMilli(t time.Time) int64 {
- return t.Round(time.Millisecond).UnixNano() / (int64(time.Millisecond) / int64(time.Nanosecond))
- }
- func getDocWithID(ctx context.Context, ref *firestore.DocumentRef) (map[string]interface{}, error) {
- snap, err := ref.Get(ctx)
- if err != nil {
- return nil, err
- }
- doc := snap.Data()
- doc["id"] = snap.Ref.ID
- return doc, nil
- }
- // SetClaim set claims to user
- func SetClaim(ctx context.Context, app *firebase.App, phoneNumber string, claims map[string]interface{}) error {
- client, err := app.Auth(ctx)
- if err != nil {
- return errors.New("error getting Auth client: " + err.Error())
- }
- user, err := client.GetUserByPhoneNumber(ctx, phoneNumber)
- if err != nil {
- return errors.New("error getting user by phone: " + err.Error())
- }
- _claims := make(map[string]interface{})
- for k, v := range user.CustomClaims {
- _claims[k] = v
- }
- for k, v := range claims {
- _claims[k] = v
- }
- // fmt.Println("all claims:", _claims)
- err = client.SetCustomUserClaims(ctx, user.UID, _claims)
- if err != nil {
- return errors.New("error set customer claim: " + err.Error())
- }
- return nil
- }
|